From cbeae1c6ad78a77882ee900b07b4348347fbc711 Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Fri, 12 Apr 2024 15:55:09 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=BF=E6=8B=89=E4=BC=AF=E8=AF=AD=E9=80=82?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi.xcodeproj/project.pbxproj | 32 ++ YuMi/Appdelegate/AppDelegate+ThirdConfig.m | 4 +- .../AppIcon.appiconset/1024 2.png | Bin 0 -> 22489 bytes .../AppIcon.appiconset/1024.png | Bin 19757 -> 0 bytes .../AppIcon.appiconset/Contents.json | 2 +- YuMi/Config/ClientConfig.m | 23 +- ...igationController+FDFullscreenPopGesture.h | 66 +++ ...igationController+FDFullscreenPopGesture.m | 485 ++++++++++++++++++ .../InputView/InputView/QinputPhotoView.m | 2 +- .../MSRTL/NSMutableAttributedString+MSRTL.m | 2 +- .../MSRTL/UINavigationController+MSRTL.h | 16 + .../MSRTL/UINavigationController+MSRTL.m | 37 ++ YuMi/CustomUI/MSRTL/UITextField+MSRTL.h | 16 + YuMi/CustomUI/MSRTL/UITextField+MSRTL.m | 66 +++ YuMi/CustomUI/MSRTL/UITextView+MSRTL.h | 15 + YuMi/CustomUI/MSRTL/UITextView+MSRTL.m | 65 +++ YuMi/CustomUI/ShareView/XPShareView.m | 8 +- YuMi/Global/YUMIMacroUitls.h | 2 +- YuMi/Info.plist | 10 +- .../View/LoginBindPhoneViewController.m | 4 +- .../View/LoginVerifCodeViewController.m | 2 +- .../View/NewLogin/XPForgetPwdViewController.m | 2 +- .../NewLogin/XPLoginPhoneViewController.m | 4 +- .../CustomView/XPSessionSayHelloHeaderView.m | 4 +- .../Cell/SessionSettingTableViewCell.m | 2 +- .../Cell/SessionUserInfoTableViewCell.m | 2 +- .../Content/MessageContentLevelUpgradeView.m | 2 +- .../View/Session/View/SessionNavView.m | 4 +- .../Session/View/SessionSettingUserView.m | 2 +- .../SessionDiscoverNewTableViewCell.m | 2 +- .../XPSessionListHeadView.m | 2 +- .../MineInfo/XPMineDataClanTableViewCell.m | 6 +- .../MineInfo/XPMineDataGiftTableViewCell.m | 4 +- .../XPMineUserInfoEditTableViewCell.m | 2 +- .../View/Cell/XPMineGameTableViewCell.m | 4 +- .../View/Cell/XPMineHeadFunctionItemLayout.h | 2 +- .../View/Cell/XPMineHeadItemTableViewCell.m | 2 +- .../View/Cell/XPMineSettingTableViewCell.m | 2 +- .../View/Cell/XPMineSwitchLanguageCell.m | 2 +- .../YMMine/View/Cell/XPMineTheGuildCell.m | 2 +- .../View/XPDressUpShopListViewController.m | 2 +- .../View/XPMineDressUpBubbleViewController.m | 2 +- .../View/Friend/XPRoomMessageBubbleView.m | 2 +- .../View/Cell/XPMineChooseGiveGiftView.m | 2 +- .../Income/XPGuildPersonIncomeTableViewCell.m | 2 +- .../XPGuildSuperAdminSetTableViewCell.m | 2 +- .../View/Cell/XPClanMemberTableViewCell.m | 4 +- .../XPMineGuildIncomeDetailViewController.m | 2 +- .../XPMineGuildPersonalBillStatisVC.m | 2 +- .../XPMineMainIncomeStatisViewController.m | 2 +- .../XPMineGuildManagerPerViewController.m | 2 +- .../Guild/View/SubViews/XPGuildHeaderView.m | 2 +- .../View/SubViews/XPGuildSearchNavView.m | 4 +- .../XPMineGuildChooseManagerViewController.m | 2 +- .../Guild/View/XPMineClanViewController.m | 4 +- .../Guild/View/XPMineGuildViewController.m | 4 +- .../View/IncomeRecord/XPIncomeRecordView.m | 2 +- .../MineInfo/XPMineSimpleUserInfoHeaderView.m | 4 +- .../XPMineSimpleUserInfoViewController.m | 2 +- .../XPMineUserInfoAlbumViewController.m | 2 +- .../XPMineUserInfoGiftWallSubViewController.m | 2 +- .../View/SubViews/PINobleCenterListView.m | 2 +- .../View/SubViews/XPNobleCenterEntranceView.m | 2 +- .../View/SubViews/XPNobleCenterNavView.m | 2 +- .../SubViews/XPNoblePrivilegeContentCell.m | 2 +- .../View/SubViews/XPNobleSettingNavView.m | 2 +- .../Recharge/XPIAPRechargeViewController.m | 4 +- .../Setting/XPMineSettingViewController.m | 13 + .../View/Setting/XPMineSwitchLanguageVC.m | 6 +- .../MineInfo/XPMineUserInfoCustomNavView.m | 2 +- .../MineInfo/XPMineUserInfoGiftView.m | 2 +- .../MineInfo/XPMineUserInfoHeaderTagView.m | 2 +- .../SubViews/MineInfo/XPMineUserInfoNavView.m | 4 +- .../MineInfo/XPMineUserInfoTagFlowLayout.h | 2 +- .../SubViews/Recharge/XPMineRechargeNavView.m | 2 +- .../YMMine/View/SubViews/XPFootPrintNavView.m | 2 +- .../YMMine/View/XPMineItemTableViewCell.m | 2 +- .../View/XPMineUserInfoRecordedSoundVC.m | 2 +- .../YMMine/View/XPMineViewController.m | 2 +- .../SubViews/XPMonentsRecommendHeaderView.m | 6 +- .../View/XPMomentListViewController.m | 2 +- .../YMMonents/View/XPMomentsSimpleDetailNav.m | 2 +- .../XPMonentTopicContainerViewController.m | 4 +- .../View/XPMonentsPublishViewController.m | 6 +- YuMi/Modules/YMNewHome/Api/Api+Home.m | 2 +- .../View/Cell/XPNewHomePlayTableViewCell.m | 2 +- .../View/CustomView/XPHomeGameView.m | 2 +- .../View/CustomView/XPNewHomeHeadView.m | 2 +- .../View/PIHoemCategoryCollectionView.m | 2 +- .../Search/View/SubView/XPHomeSearchNavView.m | 4 +- .../View/SubView/XPHomeSearchRelateView.m | 2 +- .../View/XPRoomSearchRecordViewController.m | 6 +- .../View/XPHomePartyViewController.m | 2 +- .../View/XPAcrossRoomPKSelectRoomView.m | 2 +- .../PIRoomActivityChoosePlayView.m | 4 +- .../PIRoomActivityClickView.m | 2 +- .../PIRoomActivityWebView.m | 2 +- .../AnchorPK/View/XPAnchorPKSelectRoomView.m | 2 +- .../AnimationView/XPRoomTarrowBannerView.m | 2 +- .../XPRoomBackContainerView.m | 4 +- .../XPRoomRankEntranceView.m | 2 +- .../View/CandyTree/View/XPRoomHalfWebView.m | 2 +- .../Cell/XPRoomFaceCollectionFlowLayout.h | 2 +- .../FaceView/View/XPRoomFaceViewController.m | 2 +- .../View/Cell/XPFirstRechargeFlowLayout.h | 2 +- .../View/XPLittleGameMiniStageView.m | 2 +- .../View/XPLittleGameRoomOpenView.m | 2 +- .../View/XPRoomMoreMenuViewController.m | 2 +- .../XPRoomQuickMessageContainView.m | 2 +- .../View/XPReleaseRadioViewController.m | 2 +- .../View/RoomHeaderView/RoomHeaderView.m | 2 +- .../View/Cell/XPRoomPKTimeTableViewCell.m | 2 +- .../View/SubViews/XPRoomPKSelectUserView.m | 2 +- .../View/PIRoomPhotoAlbumItemVC.m | 2 +- .../SubViews/PIRoomPhotoAlbumChooseGiftView.m | 2 +- .../PIRoomPhotoAlbumChoosePhotoGiftView.m | 2 +- .../PIRoomPhotoAlbumChoosePhotoView.m | 2 +- .../View/Sailing/View/XPSailingPrizeView.m | 2 +- .../Cell/XPGiftCollectionViewFlowLayout.h | 2 +- .../View/Cell/XPGiftCountCollectionViewCell.m | 2 +- .../View/SendGiftView/View/XPGiftBarView.m | 2 +- .../View/SendGiftView/View/XPGiftCountView.m | 2 +- .../View/XPGiftTwelveStarBroadcastView.m | 2 +- .../View/SendGiftView/View/XPGiftUsersView.m | 2 +- .../Cell/PIRedPacketChooseTypeView.m | 2 +- .../View/Cell/XPRoomSettingTableViewCell.m | 2 +- .../Setting/View/XPRoomOnLineViewController.m | 4 +- .../View/Setting/View/XPRoomTagListView.m | 2 +- .../View/XPRoomTagListViewController.m | 2 +- .../View/View/XPTreasureFailyResultView.m | 2 +- .../View/View/XPTreasureFairyExchangeView.m | 2 +- .../View/View/XPTreasureFairyFriendView.m | 4 +- .../View/View/XPTreasureFairyMyView.m | 4 +- .../View/View/XPTreasureFairyNewSummonView.m | 2 +- .../View/View/XPTreasureFairyPrizeSubView.m | 2 +- .../View/View/XPTreasureFairyShopingView.m | 4 +- .../View/XPTreasureFairyStoreResultView.m | 2 +- .../View/View/XPTreasureFairyStoreView.m | 4 +- .../View/View/XPTreasureFairySummonView.m | 8 +- .../View/View/XPTreasureFairyTrialsView.m | 4 +- .../View/SubViews/XPUserCardSkillCardView.m | 2 +- .../UserCard/View/XPUserCardViewController.m | 2 +- .../View/AnchorCard/XPAnchorCardView.m | 2 +- YuMi/Modules/YMWeb/XPWebViewController.m | 12 +- YuMi/Modules/YMWeb/XPWebViewNavView.m | 4 +- YuMi/Network/HttpRequestHelper.m | 3 +- .../Structure/Base/BaseNavigationController.m | 8 +- YuMi/Structure/PrefixHeader.pch | 1 + YuMi/Tools/Bundle/NSBundle+Localizable.m | 7 + YuMi/Tools/YYUtility/YYUtility+App.m | 3 +- YuMi/ar.lproj/Localizable.strings | 10 +- YuMi/en.lproj/InfoPlist.strings | 8 +- YuMi/en.lproj/Localizable.strings | 14 +- YuMi/zh-Hans.lproj/InfoPlist.strings | 8 +- YuMi/zh-Hans.lproj/Localizable.strings | 31 +- YuMi/zh-Hant.lproj/InfoPlist.strings | 8 +- YuMi/zh-Hant.lproj/Localizable.strings | 31 +- 157 files changed, 1091 insertions(+), 239 deletions(-) create mode 100644 YuMi/Assets.xcassets/AppIcon.appiconset/1024 2.png delete mode 100644 YuMi/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.h create mode 100644 YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.m create mode 100644 YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.h create mode 100644 YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.m create mode 100644 YuMi/CustomUI/MSRTL/UITextField+MSRTL.h create mode 100644 YuMi/CustomUI/MSRTL/UITextField+MSRTL.m create mode 100644 YuMi/CustomUI/MSRTL/UITextView+MSRTL.h create mode 100644 YuMi/CustomUI/MSRTL/UITextView+MSRTL.m diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 0a2ad35c..c4bd894b 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -250,6 +250,10 @@ 237700DD2BC7D70E00D661F1 /* UIImage+MSRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700DC2BC7D70E00D661F1 /* UIImage+MSRTL.m */; }; 237700E02BC7D78600D661F1 /* MSBaseRTLFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700DF2BC7D78600D661F1 /* MSBaseRTLFlowLayout.m */; }; 237700E32BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700E22BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.m */; }; + 237700E62BC7E81F00D661F1 /* UITextField+MSRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700E52BC7E81F00D661F1 /* UITextField+MSRTL.m */; }; + 237700E92BC7E88E00D661F1 /* UITextView+MSRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700E82BC7E88E00D661F1 /* UITextView+MSRTL.m */; }; + 237700EC2BC914B400D661F1 /* UINavigationController+MSRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700EB2BC914B400D661F1 /* UINavigationController+MSRTL.m */; }; + 237700F42BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.m in Sources */ = {isa = PBXBuildFile; fileRef = 237700F32BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.m */; }; 237B94BC2A984DA7007853E3 /* XPTrumpetPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94AE2A984DA7007853E3 /* XPTrumpetPresenter.m */; }; 237B94BD2A984DA7007853E3 /* XPNobleTrumpetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94B32A984DA7007853E3 /* XPNobleTrumpetModel.m */; }; 237B94BE2A984DA7007853E3 /* XPRoomTrumpetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94B72A984DA7007853E3 /* XPRoomTrumpetViewController.m */; }; @@ -1983,6 +1987,14 @@ 237700DF2BC7D78600D661F1 /* MSBaseRTLFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSBaseRTLFlowLayout.m; sourceTree = ""; }; 237700E12BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableAttributedString+MSRTL.h"; sourceTree = ""; }; 237700E22BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableAttributedString+MSRTL.m"; sourceTree = ""; }; + 237700E42BC7E81F00D661F1 /* UITextField+MSRTL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UITextField+MSRTL.h"; sourceTree = ""; }; + 237700E52BC7E81F00D661F1 /* UITextField+MSRTL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UITextField+MSRTL.m"; sourceTree = ""; }; + 237700E72BC7E88E00D661F1 /* UITextView+MSRTL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UITextView+MSRTL.h"; sourceTree = ""; }; + 237700E82BC7E88E00D661F1 /* UITextView+MSRTL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UITextView+MSRTL.m"; sourceTree = ""; }; + 237700EA2BC914B400D661F1 /* UINavigationController+MSRTL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UINavigationController+MSRTL.h"; sourceTree = ""; }; + 237700EB2BC914B400D661F1 /* UINavigationController+MSRTL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UINavigationController+MSRTL.m"; sourceTree = ""; }; + 237700F22BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UINavigationController+FDFullscreenPopGesture.h"; sourceTree = ""; }; + 237700F32BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UINavigationController+FDFullscreenPopGesture.m"; sourceTree = ""; }; 237B94AD2A984DA7007853E3 /* XPTrumpetPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTrumpetPresenter.h; sourceTree = ""; }; 237B94AE2A984DA7007853E3 /* XPTrumpetPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTrumpetPresenter.m; sourceTree = ""; }; 237B94B02A984DA7007853E3 /* XPRoomTrumpetProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPRoomTrumpetProtocol.h; sourceTree = ""; }; @@ -4792,6 +4804,7 @@ 189DD56C26DF5B5400AB55B1 /* CustomUI */ = { isa = PBXGroup; children = ( + 237700F12BC91F8400D661F1 /* FDFullscreenPopGesture */, 237700D42BC7D3DC00D661F1 /* MSRTL */, E8FE3C292994D0CC0006C6C7 /* SwitchView */, E81E09C6290F719C00A1F410 /* Adbvertise */, @@ -5586,10 +5599,25 @@ 237700DF2BC7D78600D661F1 /* MSBaseRTLFlowLayout.m */, 237700E12BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.h */, 237700E22BC7D7C000D661F1 /* NSMutableAttributedString+MSRTL.m */, + 237700E42BC7E81F00D661F1 /* UITextField+MSRTL.h */, + 237700E52BC7E81F00D661F1 /* UITextField+MSRTL.m */, + 237700E72BC7E88E00D661F1 /* UITextView+MSRTL.h */, + 237700E82BC7E88E00D661F1 /* UITextView+MSRTL.m */, + 237700EA2BC914B400D661F1 /* UINavigationController+MSRTL.h */, + 237700EB2BC914B400D661F1 /* UINavigationController+MSRTL.m */, ); path = MSRTL; sourceTree = ""; }; + 237700F12BC91F8400D661F1 /* FDFullscreenPopGesture */ = { + isa = PBXGroup; + children = ( + 237700F22BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.h */, + 237700F32BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.m */, + ); + path = FDFullscreenPopGesture; + sourceTree = ""; + }; 237B94AB2A984DA7007853E3 /* NobleTrumpet */ = { isa = PBXGroup; children = ( @@ -11028,6 +11056,7 @@ E8A3539128FE5F0F0014A784 /* WishGiftInfoModel.m in Sources */, 2305EEF62AD67E5500AD403C /* PIRoomPhotoAlbumItemCell.m in Sources */, E85E7B3C2A4EB0D300B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m in Sources */, + 237700EC2BC914B400D661F1 /* UINavigationController+MSRTL.m in Sources */, 23D321E82ADFED10006B259C /* PIRoomSendRedPacketItemVC.m in Sources */, E85E7B2A2A4EB0D300B6D00A /* XPGuildTimeMonthPickerView.m in Sources */, E87E62782A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m in Sources */, @@ -11100,6 +11129,7 @@ E8C1CD7327D8A16500376F83 /* XPRoomFaceTool.m in Sources */, 236B2E462AA07D06003967A8 /* UIImage+RW.m in Sources */, E81DCCCD282B63B40039E5C5 /* XPMonentsViewController.m in Sources */, + 237700E62BC7E81F00D661F1 /* UITextField+MSRTL.m in Sources */, E86507EB281A88A9006951B0 /* MessageContentSkillCardView.m in Sources */, E8B825CA26EA1231009E8E9F /* LoginVerifCodeViewController.m in Sources */, 189DD76226E60DDC00AB55B1 /* Api+Login.m in Sources */, @@ -11316,6 +11346,7 @@ E8788945273A55C200BF1D57 /* XPGiftInfoView.m in Sources */, 9BF5192628801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m in Sources */, 239141CC2AE267EF00322CA9 /* PIReceiveRedPacketSuccessView.m in Sources */, + 237700F42BC91F8400D661F1 /* UINavigationController+FDFullscreenPopGesture.m in Sources */, 23D321DC2ADFBFF6006B259C /* PIInputRedPacketView.m in Sources */, 23E9E99E2A80C7AF00B792F2 /* XPMineGuildPersonalBillRecordItemView.m in Sources */, E87DF4F52A42CC49009C1185 /* HomeMenuInfoModel.m in Sources */, @@ -11881,6 +11912,7 @@ E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */, E82107872987E49100DE7040 /* MessageRedPacketModel.m in Sources */, 23B8D8E12B87715100CA472F /* PIGeneralPublicScreenModel.m in Sources */, + 237700E92BC7E88E00D661F1 /* UITextView+MSRTL.m in Sources */, 23194DD52AD292F200649F51 /* PIPageControl.m in Sources */, 23E9EA9E2A84C42B00B792F2 /* SGYProgressView.m in Sources */, E87E91552796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m in Sources */, diff --git a/YuMi/Appdelegate/AppDelegate+ThirdConfig.m b/YuMi/Appdelegate/AppDelegate+ThirdConfig.m index 8ca63fcf..15771a8d 100644 --- a/YuMi/Appdelegate/AppDelegate+ThirdConfig.m +++ b/YuMi/Appdelegate/AppDelegate+ThirdConfig.m @@ -55,12 +55,12 @@ UIKIT_EXTERN NSString * adImageName; if (isMSRTL()) { [UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; [UISearchBar appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; - [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; +// [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; } else { [UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; [UISearchBar appearance].semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; - [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; +// [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; } } diff --git a/YuMi/Assets.xcassets/AppIcon.appiconset/1024 2.png b/YuMi/Assets.xcassets/AppIcon.appiconset/1024 2.png new file mode 100644 index 0000000000000000000000000000000000000000..5abb040dfb6f1adf2566d52c7f6df72926e976d3 GIT binary patch literal 22489 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 Z$;U=LOvSZ5*802HniyFcR_ha^{sZx0aYg_D literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png b/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png deleted file mode 100644 index 154accda70c5ea062913e66e45a5d4cd792acd56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19757 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 diff --git a/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json b/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json index cff1680b..fc99aec0 100644 --- a/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "1024.png", + "filename" : "1024 2.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/YuMi/Config/ClientConfig.m b/YuMi/Config/ClientConfig.m index cf61764d..65d6996c 100644 --- a/YuMi/Config/ClientConfig.m +++ b/YuMi/Config/ClientConfig.m @@ -38,32 +38,13 @@ - (void)clientInit { -#ifdef DEBUG - self.canOpen = YES; -#else - if(isEnterprise == YES){ - self.canOpen = NO; - }else{ - self.canOpen = YES; - } - -#endif + self.canOpen = YES; [Api clientInitConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { self.retryCount = 0; NSDictionary * initData = data.data; -#ifdef DEBUG - - self.canOpen = ![initData[@"aModel"] boolValue]; - -#else - if(isEnterprise == YES){ - self.canOpen = ![initData[@"aModel"] boolValue]; - }else{ - self.canOpen = YES; - } -#endif + self.iosPhoneBind = [initData[@"iosPhoneBind"] boolValue]; diff --git a/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.h b/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.h new file mode 100644 index 00000000..8f36a033 --- /dev/null +++ b/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.h @@ -0,0 +1,66 @@ +// The MIT License (MIT) +// +// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#import + + +/// "UINavigation+FDFullscreenPopGesture" extends UINavigationController's swipe- +/// to-pop behavior in iOS 7+ by supporting fullscreen pan gesture. Instead of +/// screen edge, you can now swipe from any place on the screen and the onboard +/// interactive pop transition works seamlessly. +/// +/// Adding the implementation file of this category to your target will +/// automatically patch UINavigationController with this feature. +@interface UINavigationController (FDFullscreenPopGesture) + +/// The gesture recognizer that actually handles interactive pop. +@property (nonatomic, strong, readonly) UIPanGestureRecognizer *fd_fullscreenPopGestureRecognizer; + +/// The RTL gesture recognizer that actually handles interactive pop. +@property (nonatomic, strong, readonly) UIScreenEdgePanGestureRecognizer *fd_rtlFullscreenPopGestureRecognizer; + +/// A view controller is able to control navigation bar's appearance by itself, +/// rather than a global way, checking "fd_prefersNavigationBarHidden" property. +/// Default to YES, disable it if you don't want so. +@property (nonatomic, assign) BOOL fd_viewControllerBasedNavigationBarAppearanceEnabled; + +@end + +/// Allows any view controller to disable interactive pop gesture, which might +/// be necessary when the view controller itself handles pan gesture in some +/// cases. +@interface UIViewController (FDFullscreenPopGesture) + +/// Whether the interactive pop gesture is disabled when contained in a navigation +/// stack. +@property (nonatomic, assign) BOOL fd_interactivePopDisabled; + +/// Indicate this view controller prefers its navigation bar hidden or not, +/// checked when view controller based navigation bar's appearance is enabled. +/// Default to NO, bars are more likely to show. +@property (nonatomic, assign) BOOL fd_prefersNavigationBarHidden; + +/// Max allowed initial distance to left edge when you begin the interactive pop +/// gesture. 0 by default, which means it will ignore this limit. +@property (nonatomic, assign) CGFloat fd_interactivePopMaxAllowedInitialDistanceToLeftEdge; + +@end diff --git a/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.m b/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.m new file mode 100644 index 00000000..957e679b --- /dev/null +++ b/YuMi/CustomUI/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.m @@ -0,0 +1,485 @@ +// The MIT License (MIT) +// +// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#import "UINavigationController+FDFullscreenPopGesture.h" +#import +#import + +#pragma mark - _FDFullscreenPopGestureRecognizerDelegate + +@interface _FDFullscreenPopGestureRecognizerDelegate : NSObject + +@property (nonatomic, weak) UINavigationController *navigationController; + +@end + +@implementation _FDFullscreenPopGestureRecognizerDelegate + +- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer +{ + // Ignore when no view controller is pushed into the navigation stack. + if (self.navigationController.viewControllers.count <= 1) { + return NO; + } + + // Ignore when the active view controller doesn't allow interactive pop. + UIViewController *topViewController = self.navigationController.viewControllers.lastObject; + if (topViewController.fd_interactivePopDisabled) { + return NO; + } + + // Ignore when the beginning location is beyond max allowed initial distance to left edge. + CGPoint beginningLocation = [gestureRecognizer locationInView:gestureRecognizer.view]; + // 设置了一个fd_interactivePopMaxAllowedInitialDistanceToLeftEdge属性用于设置最大左边距,当滑动的x坐标大于它时也是无效的 + CGFloat maxAllowedInitialDistance = topViewController.fd_interactivePopMaxAllowedInitialDistanceToLeftEdge; + if (maxAllowedInitialDistance > 0 && beginningLocation.x > maxAllowedInitialDistance) { + return NO; + } + + // Ignore pan gesture when the navigation controller is currently in transition. + // 当前是否在转场过程中。这里通过 KVC 拿到了 NavigationController 中的私有 _isTransitioning 属性 + if ([[self.navigationController valueForKey:@"_isTransitioning"] boolValue]) { + return NO; + } + + // Prevent calling the handler when the gesture begins in an opposite direction. + // 从右往左滑动也是无效的 + CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view]; + BOOL isLeftToRight = [UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight; + CGFloat multiplier = isLeftToRight ? 1 : -1; + if ((translation.x * multiplier) <= 0) { + return NO; + } + + return YES; +} + +@end + +#pragma mark - _FDFullRTLScreenPopGestureRecognizerDelegate + +@interface _FDFullRTLScreenPopGestureRecognizerDelegate : NSObject + +@property (nonatomic, weak) UINavigationController *navigationController; + +@end + +@implementation _FDFullRTLScreenPopGestureRecognizerDelegate + +// 判断当前界面是否支持手势滑动返回 +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + // Ignore when no view controller is pushed into the navigation stack. + if (self.navigationController.viewControllers.count <= 1) { + return NO; + } + // Ignore when the active view controller doesn't allow interactive pop. + UIViewController *topViewController = self.navigationController.viewControllers.lastObject; + if (topViewController.fd_interactivePopDisabled) { + return NO; + } + + // Ignore when the beginning location is beyond max allowed initial distance to left edge. + CGPoint beginningLocation = [gestureRecognizer locationInView:gestureRecognizer.view]; + CGFloat maxAllowedInitialDistance = topViewController.fd_interactivePopMaxAllowedInitialDistanceToLeftEdge; + if (maxAllowedInitialDistance > 0 && beginningLocation.x > maxAllowedInitialDistance) { + return NO; + } + + // Ignore pan gesture when the navigation controller is currently in transition. + if ([[self.navigationController valueForKey:@"_isTransitioning"] boolValue]) { + return NO; + } + + return YES; +} + +@end + +#pragma mark - _FDViewControllerWillAppearInjectBlock + +typedef void (^_FDViewControllerWillAppearInjectBlock)(UIViewController *viewController, BOOL animated); + +#pragma mark - UIViewController (FDFullscreenPopGesturePrivate) + +@interface UIViewController (FDFullscreenPopGesturePrivate) + +@property (nonatomic, copy) _FDViewControllerWillAppearInjectBlock fd_willAppearInjectBlock; + +@end + +@implementation UIViewController (FDFullscreenPopGesturePrivate) + ++ (void)load +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class class = [self class]; + + //viewWillAppear + SEL originalSelector = @selector(viewWillAppear:); + SEL swizzledSelector = @selector(fd_viewWillAppear:); + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL success = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); + if (success) { + // 主类本身没有实现需要替换的方法,而是继承了父类的实现,即 class_addMethod 方法返回 YES 。 + // 这时使用 class_getInstanceMethod 函数获取到的 originalSelector 指向的就是父类的方法,我们再通过执行 class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); + // 将父类的实现替换到我们自定义的 mrc_viewWillAppear 方法中。这样就达到了在 mrc_viewWillAppear 方法的实现中调用父类实现的目的。 + class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } + + //viewWillDisappear + SEL originalSelector2 = @selector(viewWillDisappear:); + SEL swizzledSelector2 = @selector(fd_viewWillDisappear:); + + Method originalMethod2 = class_getInstanceMethod(class, originalSelector2); + Method swizzledMethod2 = class_getInstanceMethod(class, swizzledSelector2); + + BOOL success2 = class_addMethod(class, originalSelector2, method_getImplementation(swizzledMethod2), method_getTypeEncoding(swizzledMethod2)); + if (success2) { + class_replaceMethod(class, swizzledSelector2, method_getImplementation(originalMethod2), method_getTypeEncoding(originalMethod2)); + } else { + method_exchangeImplementations(originalMethod2, swizzledMethod2); + } + }); +} + +- (void)fd_viewWillAppear:(BOOL)animated +{ + // Forward to primary implementation. + // 为了不破坏原本的业务逻辑,先执行原来的viewWillAppear方法 + [self fd_viewWillAppear:animated]; + + // 执行注入的block 这个block到底干了什么事情,会在后面讲到 + if (self.fd_willAppearInjectBlock) { + self.fd_willAppearInjectBlock(self, animated); + } + + //设置导航的显示/隐藏 + // 根据导航栏栈顶控制的fd_prefersNavigationBarHidden这个分类属性,- 控制导航栏是否需要隐藏 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(CGFLOAT_MIN * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + UIViewController *vc = [self.navigationController.viewControllers lastObject]; + if (vc.fd_prefersNavigationBarHidden) { + [self.navigationController setNavigationBarHidden:YES animated:NO]; + } else { + [self.navigationController setNavigationBarHidden:NO animated:NO]; + } + }); +} + +- (void)fd_viewWillDisappear:(BOOL)animated{ + + [self fd_viewWillDisappear:animated]; + + //设置导航的显示/隐藏 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(CGFLOAT_MIN * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + UIViewController *vc = [self.navigationController.viewControllers lastObject]; + if (vc.fd_prefersNavigationBarHidden) { + [self.navigationController setNavigationBarHidden:YES animated:NO]; + } else { + [self.navigationController setNavigationBarHidden:NO animated:NO]; + } + }); +} + +- (_FDViewControllerWillAppearInjectBlock)fd_willAppearInjectBlock +{ + // 1. 调用fd_willAppearInjectBlock属性的get方法的时候 + // 2. 会在本类中以该get方法的名称为key,找到对应的value,也就是该block的值 + return objc_getAssociatedObject(self, _cmd); +} + +- (void)setFd_willAppearInjectBlock:(_FDViewControllerWillAppearInjectBlock)block +{ + // 1. 当调用了fd_willAppearInjectBlock这个分类属性的set方法时候, + // 2. 会以block为value 以该属性的get方法为key将block存储起来 + // 3. 以后就可以通过调用fd_willAppearInjectBlock属性的get方法,获取block + objc_setAssociatedObject(self, @selector(fd_willAppearInjectBlock), block, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +@end + +#pragma mark - RTLEdgePanGesture + +@interface RTLEdgePanGesture : UIScreenEdgePanGestureRecognizer +@end + +@implementation RTLEdgePanGesture + +// 当手势侧滑时会调用该方法,取到的是手指移动后,在相对坐标中的偏移量 +// 注意:如果系统是阿语,手势已经做了特殊处理,所以这个时候使用系统默认的就好 +- (CGPoint)translationInView:(UIView *)view { + if (isMSRTL()) { + // APP 为阿语 + return [super translationInView:view]; + } + if ([UIDevice currentDevice].systemVersion.doubleValue > 9.0) { + CGPoint oldP = [super translationInView:view]; + // app为阿语 系统不是 反向处理 + return CGPointMake(-oldP.x, oldP.y); + } + return [super translationInView:view]; +} + +@end + +#pragma mark - UINavigationController (FDFullscreenPopGesture) + +@implementation UINavigationController (FDFullscreenPopGesture) + ++ (void)load { + // Inject "-pushViewController:animated:" + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class class = [self class]; + + SEL originalSelector = @selector(pushViewController:animated:); + SEL swizzledSelector = @selector(fd_pushViewController:animated:); + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + // 1.这里要注意,class_addMethod是为了检查本类是否实现了这个方法 + // 2.如果方法添加成功,代表本类没有实现该方法(该方法在父类中实现,却没有在子类中实现) + // 3.如果实现了,那很好,直接交换 + // 4.如果没实现,那么class_addMethod已经把push方法 (对应的实现是fd_push)添加到了本类 + // 5.我们只需要再调用class_replaceMethod方法添加fd_push(对应的实现是push) 添加到本类 + // 6.这样,就达到了方法交换的目的 + // 7.pushViewController:animated: 的内部实现为fd_pushViewController:animated: + BOOL success = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); + if (success) { + class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } + }); +} + +- (void)fd_pushViewController:(UIViewController *)viewController animated:(BOOL)animated +{ + // 自定义的手势直接添加到interactivePopGestureRecognizer对应的View上。 + // 实际上就是将系统的手势事件转发为自定义的手势,触发的事件不变 + // doc:http://t.cn/RssK6mz 处理阿语翻转手势 + // 当前APP语言为阿语 || 系统语言为阿语 + if (isMSRTL()) { + if (![self.interactivePopGestureRecognizer.view.gestureRecognizers containsObject:self.fd_rtlFullscreenPopGestureRecognizer]) { + // Add our own gesture recognizer to where the onboard screen edge pan gesture recognizer is attached to. + [self.interactivePopGestureRecognizer.view addGestureRecognizer:self.fd_rtlFullscreenPopGestureRecognizer]; + + // Forward the gesture events to the private handler of the onboard gesture recognizer. + // interactivePopGestureRecognizer会操作一个指定的target , action “handleNavigationTransition”, + // 通过Runtime动态获取到指定的target, 及action添加到自定义的手势上。 + NSArray *internalTargets = [self.interactivePopGestureRecognizer valueForKey:@"targets"]; + // get releate target + id internalTarget = [internalTargets.firstObject valueForKey:@"target"]; + // get handleNavigationTransition sel + SEL internalAction = NSSelectorFromString(@"handleNavigationTransition:"); + self.fd_rtlFullscreenPopGestureRecognizer.delegate = self.fd_popRTLGestureRecognizerDelegate; + // add target and action to this gesture + [self.fd_rtlFullscreenPopGestureRecognizer addTarget:internalTarget action:internalAction]; + + // Disable the onboard gesture recognizer. + self.interactivePopGestureRecognizer.enabled = NO; + } + } else { + if (![self.interactivePopGestureRecognizer.view.gestureRecognizers containsObject:self.fd_fullscreenPopGestureRecognizer]) { + + // Add our own gesture recognizer to where the onboard screen edge pan gesture recognizer is attached to. + [self.interactivePopGestureRecognizer.view addGestureRecognizer:self.fd_fullscreenPopGestureRecognizer]; + + // Forward the gesture events to the private handler of the onboard gesture recognizer. + NSArray *internalTargets = [self.interactivePopGestureRecognizer valueForKey:@"targets"]; + id internalTarget = [internalTargets.firstObject valueForKey:@"target"]; + SEL internalAction = NSSelectorFromString(@"handleNavigationTransition:"); + self.fd_fullscreenPopGestureRecognizer.delegate = self.fd_popGestureRecognizerDelegate; + [self.fd_fullscreenPopGestureRecognizer addTarget:internalTarget action:internalAction]; + + // Disable the onboard gesture recognizer. + self.interactivePopGestureRecognizer.enabled = NO; + } + } + + // Handle perferred navigation bar appearance. + [self fd_setupViewControllerBasedNavigationBarAppearanceIfNeeded:viewController]; + + //过滤MessageUI,并且添加取消按钮 + if ([self isKindOfClass:[MFMessageComposeViewController class]]) { + [self fd_pushViewController:viewController animated:animated]; + [[self.viewControllers lastObject] navigationItem].rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismissModal:)]; + return; + } + + // Forward to primary implementation. 调用父类pushViewController:animated + if (![self.viewControllers containsObject:viewController]) { + [self fd_pushViewController:viewController animated:animated]; + } +} + +- (void)dismissModal:(UIButton *)sender +{ + [[self.viewControllers lastObject] dismissViewControllerAnimated:YES completion:nil]; +} + +// 设置当前即将要push的ViewController的当要处理隐藏导航栏时的block +- (void)fd_setupViewControllerBasedNavigationBarAppearanceIfNeeded:(UIViewController *)appearingViewController +{ + if (!self.fd_viewControllerBasedNavigationBarAppearanceEnabled) { + return; + } + + // viewWillAppear的时候将会调用该方法,实际上内部也是通过调用setNavigationBarHidden:animated:来设置NavigationBar的显示 + __weak typeof(self) weakSelf = self; + _FDViewControllerWillAppearInjectBlock block = ^(UIViewController *viewController, BOOL animated) { + __strong typeof(weakSelf) strongSelf = weakSelf; + if (strongSelf) { + [strongSelf setNavigationBarHidden:viewController.fd_prefersNavigationBarHidden animated:animated]; + } + }; + + // Setup will appear inject block to appearing view controller. + // Setup disappearing view controller as well, because not every view controller is added into + // stack by pushing, maybe by "-setViewControllers:". + appearingViewController.fd_willAppearInjectBlock = block; + UIViewController *disappearingViewController = self.viewControllers.lastObject; + if (disappearingViewController && !disappearingViewController.fd_willAppearInjectBlock) { + disappearingViewController.fd_willAppearInjectBlock = block; + } +} + +- (_FDFullscreenPopGestureRecognizerDelegate *)fd_popGestureRecognizerDelegate +{ + // 1.这是我们在1.中第一个提到的类,自定义的pan手势代理,在这个类实现 + // 2.由于该类在判断手势是否满足触发条件时,需要根据导航控制器的情况来做判断 + // 3.所以将导航控制器交给该类引用(记得用weak,不然会循环引用) + _FDFullscreenPopGestureRecognizerDelegate *delegate = objc_getAssociatedObject(self, _cmd); + + if (!delegate) { + delegate = [[_FDFullscreenPopGestureRecognizerDelegate alloc] init]; + delegate.navigationController = self; + + objc_setAssociatedObject(self, _cmd, delegate, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return delegate; +} + +- (UIPanGestureRecognizer *)fd_fullscreenPopGestureRecognizer +{ + UIPanGestureRecognizer *panGestureRecognizer = objc_getAssociatedObject(self, _cmd); + + if (!panGestureRecognizer) { + panGestureRecognizer = [[UIPanGestureRecognizer alloc] init]; + panGestureRecognizer.maximumNumberOfTouches = 1; + + objc_setAssociatedObject(self, _cmd, panGestureRecognizer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return panGestureRecognizer; +} + +- (_FDFullRTLScreenPopGestureRecognizerDelegate *)fd_popRTLGestureRecognizerDelegate { + _FDFullRTLScreenPopGestureRecognizerDelegate *rtlDelegate = objc_getAssociatedObject(self, _cmd); + + if (!rtlDelegate) { + rtlDelegate = [[_FDFullRTLScreenPopGestureRecognizerDelegate alloc] init]; + rtlDelegate.navigationController = self; + + objc_setAssociatedObject(self, _cmd, rtlDelegate, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return rtlDelegate; +} + +- (UIScreenEdgePanGestureRecognizer *)fd_rtlFullscreenPopGestureRecognizer { + UIScreenEdgePanGestureRecognizer *rtlPanGestureRecognizer = objc_getAssociatedObject(self, _cmd); + if (!rtlPanGestureRecognizer) { + rtlPanGestureRecognizer = [[RTLEdgePanGesture alloc] init]; + rtlPanGestureRecognizer.edges = UIRectEdgeRight; + if (isMSRTL() == NO) { + // APP 不是阿语,强制把 APP 换成原来的 + rtlPanGestureRecognizer.edges = UIRectEdgeLeft; + } + objc_setAssociatedObject(self, _cmd, rtlPanGestureRecognizer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return rtlPanGestureRecognizer; +} + +- (BOOL)fd_viewControllerBasedNavigationBarAppearanceEnabled +{ + NSNumber *number = objc_getAssociatedObject(self, _cmd); + if (number) { + return number.boolValue; + } + self.fd_viewControllerBasedNavigationBarAppearanceEnabled = YES; + return YES; +} + +- (void)setFd_viewControllerBasedNavigationBarAppearanceEnabled:(BOOL)enabled +{ + SEL key = @selector(fd_viewControllerBasedNavigationBarAppearanceEnabled); + objc_setAssociatedObject(self, key, @(enabled), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - UIViewController (FDFullscreenPopGesture) + +@implementation UIViewController (FDFullscreenPopGesture) + +- (BOOL)fd_interactivePopDisabled +{ + return [objc_getAssociatedObject(self, _cmd) boolValue]; +} + +- (void)setFd_interactivePopDisabled:(BOOL)disabled +{ + objc_setAssociatedObject(self, @selector(fd_interactivePopDisabled), @(disabled), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (BOOL)fd_prefersNavigationBarHidden +{ + return [objc_getAssociatedObject(self, _cmd) boolValue]; +} + +- (void)setFd_prefersNavigationBarHidden:(BOOL)hidden +{ + objc_setAssociatedObject(self, @selector(fd_prefersNavigationBarHidden), @(hidden), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + + +- (CGFloat)fd_interactivePopMaxAllowedInitialDistanceToLeftEdge +{ +#if CGFLOAT_IS_DOUBLE + return [objc_getAssociatedObject(self, _cmd) doubleValue]; +#else + return [objc_getAssociatedObject(self, _cmd) floatValue]; +#endif +} + +- (void)setFd_interactivePopMaxAllowedInitialDistanceToLeftEdge:(CGFloat)distance +{ + SEL key = @selector(fd_interactivePopMaxAllowedInitialDistanceToLeftEdge); + objc_setAssociatedObject(self, key, @(MAX(0, distance)), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m index 60a91890..a0b74e5c 100644 --- a/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m +++ b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m @@ -164,7 +164,7 @@ QPhotoImageModel * imageInfo = [self.photoList safeObjectAtIndex1:indexPath.row] #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; layout.itemSize = CGSizeMake(95, 138); layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/CustomUI/MSRTL/NSMutableAttributedString+MSRTL.m b/YuMi/CustomUI/MSRTL/NSMutableAttributedString+MSRTL.m index f5cffd9a..f4c6a273 100644 --- a/YuMi/CustomUI/MSRTL/NSMutableAttributedString+MSRTL.m +++ b/YuMi/CustomUI/MSRTL/NSMutableAttributedString+MSRTL.m @@ -19,7 +19,7 @@ /// 用来解决YYText在RTL下的bug,如果昵称是阿语,整个富文本宽度计算会有误,在昵称前插入此空白字符串,可以修正布局。“i”可以是随意字母或中文 + (NSMutableAttributedString *)createBlankAttributeToMSLTR { - NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:@"i"]; + NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:@"\u202A"]; [attribute addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:0], NSForegroundColorAttributeName: UIColor.clearColor} range:NSMakeRange(0, attribute.length)]; return attribute; } diff --git a/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.h b/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.h new file mode 100644 index 00000000..b9ff6eae --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.h @@ -0,0 +1,16 @@ +// +// UINavigationController+MSRTL.h +// YuMi +// +// Created by duoban on 2024/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface UINavigationController (MSRTL) + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.m b/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.m new file mode 100644 index 00000000..f9232e8f --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UINavigationController+MSRTL.m @@ -0,0 +1,37 @@ +// +// UINavigationController+MSRTL.m +// YuMi +// +// Created by duoban on 2024/4/12. +// + +#import "UINavigationController+MSRTL.h" + + + +@implementation UINavigationController (MSRTL) + ++ (void)load +{ + if (isMSRTL()) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Method oldMethod = class_getInstanceMethod(self, @selector(initWithNibName:bundle:)); + Method newMethod = class_getInstanceMethod(self, @selector(msrtl_initWithNibName:bundle:)); + method_exchangeImplementations(oldMethod, newMethod); + }); + } +} + +- (instancetype)msrtl_initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil +{ + if ([self msrtl_initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { + if (@available(iOS 9.0, *)) { + self.navigationBar.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;; + self.view.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; + } + } + return self; +} + +@end diff --git a/YuMi/CustomUI/MSRTL/UITextField+MSRTL.h b/YuMi/CustomUI/MSRTL/UITextField+MSRTL.h new file mode 100644 index 00000000..8e18c6f0 --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UITextField+MSRTL.h @@ -0,0 +1,16 @@ +// +// UITextField+MSRTL.h +// YuMi +// +// Created by duoban on 2024/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UITextField (MSRTL) + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MSRTL/UITextField+MSRTL.m b/YuMi/CustomUI/MSRTL/UITextField+MSRTL.m new file mode 100644 index 00000000..db75cf15 --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UITextField+MSRTL.m @@ -0,0 +1,66 @@ +// +// UITextField+MSRTL.m +// YuMi +// +// Created by duoban on 2024/4/11. +// + +#import "UITextField+MSRTL.h" +@implementation UITextField (MSRTL) + ++ (void)load { + if(isMSRTL()){ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + Method oldInitMethod = class_getInstanceMethod(self,@selector(initWithFrame:)); + Method newInitMethod = class_getInstanceMethod(self, @selector(msrtl_initWithFrame:)); + method_exchangeImplementations(oldInitMethod, newInitMethod); //交换成功 + + Method oldTextMethod1 = class_getInstanceMethod(self,@selector(setPlaceholder:)); + Method newTextMethod1 = class_getInstanceMethod(self, @selector(msrtl_setPlaceholder:)); + method_exchangeImplementations(oldTextMethod1, newTextMethod1); //交换成功 + + Method oldTextMethod = class_getInstanceMethod(self,@selector(setTextAlignment:)); + Method newTextMethod = class_getInstanceMethod(self, @selector(msrtl_setTextAlignment:)); + method_exchangeImplementations(oldTextMethod, newTextMethod); //交换成功 + Method oldMethod = class_getInstanceMethod(self,@selector(setAttributedPlaceholder:)); + Method newMethod = class_getInstanceMethod(self, @selector(msrtl_setAttributedPlaceholder:)); + method_exchangeImplementations(oldMethod, newMethod); //交换成功 + }); + } + +} + +- (void)msrtl_setTextAlignment:(NSTextAlignment)textAlignment { + if (isMSRTL()) { + if (textAlignment == NSTextAlignmentNatural || textAlignment == NSTextAlignmentLeft) { + textAlignment = NSTextAlignmentRight; + } else if (textAlignment == NSTextAlignmentRight) { + textAlignment = NSTextAlignmentLeft; + } + } + [self msrtl_setTextAlignment:textAlignment]; +} +- (instancetype)msrtl_initWithFrame:(CGRect)frame { + if ([self msrtl_initWithFrame:frame]) { + self.textAlignment = NSTextAlignmentNatural; + } + return self; +} +- (void)msrtl_setAttributedPlaceholder:(NSAttributedString *)attributedPlaceholder{ + NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithAttributedString:attributedPlaceholder]; + NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; + NSTextAlignment textAli = NSTextAlignmentRight; + paragraph.alignment = textAli; + [att addAttributes:@{NSParagraphStyleAttributeName: paragraph} range:[attributedPlaceholder.string rangeOfString:attributedPlaceholder.string]]; + [self msrtl_setAttributedPlaceholder:att]; + +} +- (void)msrtl_setPlaceholder:(NSString *)placeholder { + if(placeholder == nil)return; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:placeholder]; + self.attributedPlaceholder = attribute; +} + +@end diff --git a/YuMi/CustomUI/MSRTL/UITextView+MSRTL.h b/YuMi/CustomUI/MSRTL/UITextView+MSRTL.h new file mode 100644 index 00000000..2d24f5c9 --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UITextView+MSRTL.h @@ -0,0 +1,15 @@ +// +// UITextView+MSRTL.h +// YuMi +// +// Created by duoban on 2024/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface UITextView (MSRTL) + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MSRTL/UITextView+MSRTL.m b/YuMi/CustomUI/MSRTL/UITextView+MSRTL.m new file mode 100644 index 00000000..0712c36b --- /dev/null +++ b/YuMi/CustomUI/MSRTL/UITextView+MSRTL.m @@ -0,0 +1,65 @@ +// +// UITextView+MSRTL.m +// YuMi +// +// Created by duoban on 2024/4/11. +// + +#import "UITextView+MSRTL.h" + +@implementation UITextView (MSRTL) + ++ (void)load { + if(isMSRTL()){ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Method oldInitMethod = class_getInstanceMethod(self,@selector(initWithFrame:)); + Method newInitMethod = class_getInstanceMethod(self, @selector(msrtl_initWithFrame:)); + method_exchangeImplementations(oldInitMethod, newInitMethod); //交换成功 + Method oldTextMethod = class_getInstanceMethod(self,@selector(setTextAlignment:)); + Method newTextMethod = class_getInstanceMethod(self, @selector(msrtl_setTextAlignment:)); + method_exchangeImplementations(oldTextMethod, newTextMethod); //交换成功 + + Method oldTextMethod1 = class_getInstanceMethod(self,@selector(setPlaceholder:)); + Method newTextMethod1 = class_getInstanceMethod(self, @selector(msrtl_setPlaceholder:)); + method_exchangeImplementations(oldTextMethod1, newTextMethod1); //交换成功 + + + Method oldMethod = class_getInstanceMethod(self,@selector(setAttributedPlaceholder:)); + Method newMethod = class_getInstanceMethod(self, @selector(msrtl_setAttributedPlaceholder:)); + method_exchangeImplementations(oldMethod, newMethod); //交换成功 + }); + } + +} +- (instancetype)msrtl_initWithFrame:(CGRect)frame { + if ([self msrtl_initWithFrame:frame]) { + self.textAlignment = NSTextAlignmentNatural; + } + return self; +} +- (void)msrtl_setTextAlignment:(NSTextAlignment)textAlignment { + if (isMSRTL()) { + if (textAlignment == NSTextAlignmentNatural || textAlignment == NSTextAlignmentLeft) { + textAlignment = NSTextAlignmentRight; + } else if (textAlignment == NSTextAlignmentRight) { + textAlignment = NSTextAlignmentLeft; + } + } + [self msrtl_setTextAlignment:textAlignment]; +} +- (void)msrtl_setAttributedPlaceholder:(NSAttributedString *)attributedPlaceholder{ + NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithAttributedString:attributedPlaceholder]; + NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; + NSTextAlignment textAli = NSTextAlignmentRight; + paragraph.alignment = textAli; + [att addAttributes:@{NSParagraphStyleAttributeName: paragraph} range:[attributedPlaceholder.string rangeOfString:attributedPlaceholder.string]]; + [self msrtl_setAttributedPlaceholder:att]; + +} +- (void)msrtl_setPlaceholder:(NSString *)placeholder { + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:placeholder]; + // self.attributedPlaceholder = attribute; +} + +@end diff --git a/YuMi/CustomUI/ShareView/XPShareView.m b/YuMi/CustomUI/ShareView/XPShareView.m index 305f9634..d76b9281 100644 --- a/YuMi/CustomUI/ShareView/XPShareView.m +++ b/YuMi/CustomUI/ShareView/XPShareView.m @@ -136,6 +136,12 @@ 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 : @""; + if ([urlString containsString:@"?"]){ + urlString = [NSString stringWithFormat:@"%@&lang=%@",urlString,[NSBundle uploadLanguageText]]; + }else{ + urlString = [NSString stringWithFormat:@"%@?lang=%@",urlString,[NSBundle uploadLanguageText]]; + } + NSString *encodedUrl = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; XPShareItem * item = [self.items safeObjectAtIndex1:indexPath.item]; @@ -304,7 +310,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = self.itemSize; layout.minimumInteritemSpacing = 0; layout.minimumLineSpacing = 10; diff --git a/YuMi/Global/YUMIMacroUitls.h b/YuMi/Global/YUMIMacroUitls.h index 582e74ec..9152df44 100644 --- a/YuMi/Global/YUMIMacroUitls.h +++ b/YuMi/Global/YUMIMacroUitls.h @@ -56,7 +56,7 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns ///正式环境 #define API_HOST_URL @"https://api.hfighting.com" ///测试环境 -#define API_HOST_TEST_URL [NSString stringWithFormat:@"%@%@",@"http://beta.api",@".pekolive.com"] +#define API_HOST_TEST_URL @"http://beta.api.molistar.xyz" #define API_Image_URL @"https://image.hfighting.com" diff --git a/YuMi/Info.plist b/YuMi/Info.plist index 94ad33a6..beb4bc39 100644 --- a/YuMi/Info.plist +++ b/YuMi/Info.plist @@ -95,17 +95,17 @@ NSCameraUsageDescription - “Moli Star”需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看 + “MoliStar”需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看 NSLocalNetworkUsageDescription 此App将可发现和连接到您所用网络上的设备。 NSLocationWhenInUseUsageDescription - “Moli Star”需要您的同意,才可以进行定位服务,推荐附近好友 + “MoliStar”需要您的同意,才可以进行定位服务,推荐附近好友 NSMicrophoneUsageDescription - “Moli Star”需要您的同意,才可以进行语音聊天 + “MoliStar”需要您的同意,才可以进行语音聊天 NSPhotoLibraryAddUsageDescription - “Moli Star”需要您的同意,才可以存储相片到相册 + “MoliStar”需要您的同意,才可以存储相片到相册 NSPhotoLibraryUsageDescription - “Moli Star”需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看 + “MoliStar”需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看 NSUserTrackingUsageDescription 请允许我们获取您的IDFA权限,可以为您提供个性化活动和服务。未经您的允许,您的信息将不作其他用途 UIApplicationSupportsIndirectInputEvents diff --git a/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m index 62fda487..8ca55fe6 100644 --- a/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m +++ b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m @@ -212,8 +212,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton setEnlargeEdgeWithTop:15 right:15 bottom:15 left:15]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m index 3bdeef27..698e8215 100644 --- a/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m +++ b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m @@ -354,7 +354,7 @@ - (UIButton *)backBtn{ if (!_backBtn){ _backBtn = [UIButton new]; - [_backBtn setBackgroundImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backBtn setBackgroundImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m index 0775f2b9..676bdc39 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m @@ -262,7 +262,7 @@ - (UIButton *)backBnt{ if(!_backBnt){ _backBnt = [UIButton new]; - [_backBnt setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_backBnt setImage:[kImage(@"common_nav_back")ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBnt addTarget:self action:@selector(backViewAction1) forControlEvents:UIControlEventTouchUpInside]; [_backBnt setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m index 27053db0..81cf74de 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m @@ -279,7 +279,7 @@ - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = @"Welcome to Moli Star!"; + _titleLabel.text = @"Welcome to MoliStar!"; _titleLabel.font = kFontBold(28); _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); } @@ -360,7 +360,7 @@ - (UIButton *)backBnt{ if(!_backBnt){ _backBnt = [UIButton new]; - [_backBnt setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_backBnt setImage:[kImage(@"common_nav_back")ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBnt addTarget:self action:@selector(backViewAction) forControlEvents:UIControlEventTouchUpInside]; [_backBnt setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m index fd2daf23..c876e2b3 100644 --- a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m +++ b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m @@ -158,8 +158,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m index 15e35f53..475d24e4 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m @@ -148,7 +148,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m index c042c7eb..ac17c460 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m @@ -394,7 +394,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(00, 15, 0, 0); layout.itemSize = CGSizeMake(72, 72); layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m index ea3f4835..4aab4244 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m @@ -136,7 +136,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"common_right_arrow"]ms_SetImageForRTL]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m index 5d53ed6f..ed08fb4b 100644 --- a/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m @@ -168,8 +168,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m index a535267f..150929e6 100644 --- a/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m @@ -141,7 +141,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionDiscoverNewTableViewCell.m b/YuMi/Modules/YMMessage/View/SessionList/SessionDiscoverNewTableViewCell.m index 2089a3ba..05a9359d 100644 --- a/YuMi/Modules/YMMessage/View/SessionList/SessionDiscoverNewTableViewCell.m +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionDiscoverNewTableViewCell.m @@ -105,7 +105,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"common_right_arrow"]ms_SetImageForRTL]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m index 523c95d1..201c6204 100644 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m @@ -303,7 +303,7 @@ NSString * const kMengXinShowReadDotKey = @"kMengXinShowReadDotKey"; - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.minimumLineSpacing = 18; // layout.minimumInteritemSpacing = 18; diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m index bc81056d..9d4e1ccc 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m @@ -369,7 +369,7 @@ _areaIconView = [UIButton new]; [_areaIconView setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_areaIconView addTarget:self action:@selector(didTapAreaView) forControlEvents:UIControlEventTouchUpInside]; - [_areaIconView setBackgroundImage:kImage(@"mine_clan_arrow") forState:UIControlStateNormal]; + [_areaIconView setBackgroundImage:[kImage(@"mine_clan_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; } return _areaIconView; } @@ -396,7 +396,7 @@ _roomIconView = [UIButton new]; [_roomIconView setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_roomIconView addTarget:self action:@selector(didTapHallView) forControlEvents:UIControlEventTouchUpInside]; - [_roomIconView setBackgroundImage:kImage(@"mine_clan_arrow") forState:UIControlStateNormal]; + [_roomIconView setBackgroundImage:[kImage(@"mine_clan_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; _roomIconView.hidden = YES; } return _roomIconView; @@ -424,7 +424,7 @@ _clanIconView = [UIButton new]; [_clanIconView setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_clanIconView addTarget:self action:@selector(didTapClanView) forControlEvents:UIControlEventTouchUpInside]; - [_clanIconView setBackgroundImage:kImage(@"mine_clan_arrow") forState:UIControlStateNormal]; + [_clanIconView setBackgroundImage:[kImage(@"mine_clan_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; _clanIconView.hidden = YES; } return _clanIconView; diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m index 239ae578..260a7ff1 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m @@ -157,8 +157,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_arrowButton setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m index 101c2116..994f4fa1 100644 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m @@ -339,7 +339,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"mine_item_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"mine_item_arrow"]ms_SetImageForRTL]; [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; } return _arrowImageView; diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineGameTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineGameTableViewCell.m index 4c906e76..7907c301 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineGameTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPMineGameTableViewCell.m @@ -86,7 +86,7 @@ } } -#pragma mark - UICollectionViewFlowlayout +#pragma mark - MSBaseRTLFlowLayout - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { return 0; } @@ -161,7 +161,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; _collectionView.showsHorizontalScrollIndicator = NO; diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h index 50abcd9c..6ca64f64 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface XPMineHeadFunctionItemLayout : UICollectionViewFlowLayout +@interface XPMineHeadFunctionItemLayout : MSBaseRTLFlowLayout @end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m index 39f16d0d..05becd18 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m @@ -75,7 +75,7 @@ } } -#pragma mark - UICollectionViewFlowlayout +#pragma mark - MSBaseRTLFlowLayout - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { return 0; } diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m index 4cbd21f3..d5443e59 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m @@ -95,7 +95,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"mine_item_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"mine_item_arrow"]ms_SetImageForRTL]; [_arrowImageView setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; } diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineSwitchLanguageCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineSwitchLanguageCell.m index 47997d18..842c1cb0 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineSwitchLanguageCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPMineSwitchLanguageCell.m @@ -66,7 +66,7 @@ - (UIImageView *)chooseView{ if(!_chooseView){ _chooseView = [UIImageView new]; - _chooseView.image = kImage(@"pi_mine_set_language_choose"); + _chooseView.image = kImage(@"pi_mine_set_language_choose") ; } return _chooseView; } diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m index 0743ba59..9be9320f 100644 --- a/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m +++ b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m @@ -139,7 +139,7 @@ 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 setBackgroundImage:[[UIImage imageNamed:@"mine_guild_right_arrow"]ms_SetImageForRTL] forState:UIControlStateSelected]; _rightIconBtn.selected = NO; _rightIconBtn.userInteractionEnabled = NO; } diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m index 572cb007..3f6c8ef9 100644 --- a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m @@ -204,7 +204,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m index 79ac8319..71f2035f 100644 --- a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m @@ -131,7 +131,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m index f4190338..3492d42d 100644 --- a/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m +++ b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m @@ -194,7 +194,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(87, 48); layout.minimumLineSpacing = 0.1; layout.minimumInteritemSpacing = 0.1; diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m index da20797f..db0660ed 100644 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m @@ -189,7 +189,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView){ - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc]init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; _collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout]; _collectionView.delegate = self; diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m index bfe30ace..8de78835 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m @@ -176,7 +176,7 @@ - (UIButton *)arrowImageView { if (!_arrowImageView) { _arrowImageView = [[UIButton alloc] init]; - [_arrowImageView setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [_arrowImageView setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m index edc19559..392e24cf 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m @@ -223,7 +223,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.minimumLineSpacing = 10; layout.itemSize = CGSizeMake(60, 80); diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m index 9de5e0aa..27052cfe 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m @@ -299,8 +299,8 @@ make.leading.trailing.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]; + [self.rightButton setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [self.rightButton setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateSelected]; } break; case ClanMemberTableViewCellType_Manager_Add_Remove: diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m index ce25b4a7..50dcd26c 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m @@ -135,7 +135,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 10; layout.minimumInteritemSpacing = 10; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillStatisVC.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillStatisVC.m index 913feef6..88354054 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillStatisVC.m +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillStatisVC.m @@ -175,7 +175,7 @@ _navView.titleLabel.text = YMLocalizedString(@"XPMineGuildPersonalBillStatisVC0"); _navView.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; _navView.titleLabel.textColor = UIColorFromRGB(0x1F1B4F); - [_navView.backButton setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_navView.backButton setImage:[kImage(@"common_nav_back")ms_SetImageForRTL] forState:UIControlStateNormal]; _navView.delegate = self; } return _navView; diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m index 3025d56a..e7484144 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m @@ -164,7 +164,7 @@ _navView.titleLabel.text = YMLocalizedString(@"XPMineGuildPersonalBillStatisVC0"); _navView.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; _navView.titleLabel.textColor = UIColorFromRGB(0x1F1B4F); - [_navView.backButton setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_navView.backButton setImage:[kImage(@"common_nav_back")ms_SetImageForRTL] forState:UIControlStateNormal]; _navView.delegate = self; } return _navView; diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m index b03ebebf..877d4c1b 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m @@ -274,7 +274,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m index 5f56c24d..6053f2fc 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m @@ -384,7 +384,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.minimumLineSpacing = 10; layout.itemSize = CGSizeMake(60, 80); diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m index ade1062e..8a40e6d6 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m @@ -119,8 +119,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:5 bottom:10 left:8]; } diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m index b5825edb..2e0dd7dd 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m @@ -196,7 +196,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m index ab2993d2..8b54cbef 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m @@ -309,8 +309,8 @@ - (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 setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m index b3ca6a86..31af7149 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m @@ -689,8 +689,8 @@ UIKIT_EXTERN NSString *kInviteMemeberSuccess; - (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 setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m index 316eb474..35b811fd 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m @@ -158,7 +158,7 @@ CGFloat width = [[NSBundle getLanguageText]hasPrefix:@"zh"] ? 40 : 50; _detailView.imageEdgeInsets = UIEdgeInsetsMake(0, kGetScaleWidth(width), 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 setImage:self.type == IncomeRecord_Diamond ? [[UIImage imageNamed:@"income_record_arrow_1"]ms_SetImageForRTL]: [[UIImage imageNamed:@"income_record_arrow_2"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_detailView addTarget:self action:@selector(clickDetailViewAction) forControlEvents:UIControlEventTouchUpInside]; } return _detailView; diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m index 900454a0..fc9f2809 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m @@ -385,8 +385,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_arrowButton setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m index 91bab037..1d222e65 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m @@ -318,7 +318,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; CGFloat height = 220.0/165.0*width; diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m index 2a4df195..524c9cfb 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m @@ -238,7 +238,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout 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; diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m index 47e035ce..fef69cda 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m @@ -137,7 +137,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = kGetScaleWidth(15); layout.minimumInteritemSpacing = 0; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterListView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterListView.m index 2cb6f301..0fd12694 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterListView.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterListView.m @@ -130,7 +130,7 @@ - (UICollectionView *)pi_collectionView{ if(!_pi_collectionView){ - UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; + MSBaseRTLFlowLayout *layout = [MSBaseRTLFlowLayout new]; layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 0; diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m index 08c5d0b4..a0b0a41a 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m @@ -227,7 +227,7 @@ -(UIImageView *)arrowImageView{ if (!_arrowImageView){ _arrowImageView = [UIImageView new]; - _arrowImageView.image = [UIImage imageNamed:@"mine_head_noble_arrow"] ; + _arrowImageView.image = [[UIImage imageNamed:@"mine_head_noble_arrow"]ms_SetImageForRTL] ; } return _arrowImageView; } diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m index 4cf9765f..4ce49b4c 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m @@ -89,7 +89,7 @@ - (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"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m index a9b7f7e1..579c2fd0 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m @@ -180,7 +180,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(KScreenWidth / 3, 105); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 0; diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m index 34bded65..9236e6f5 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m @@ -59,7 +59,7 @@ - (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"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m index ac3cb0d9..14c4f3ac 100644 --- a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m @@ -552,7 +552,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 0; @@ -633,7 +633,7 @@ - (UIButton *)backBtn { if (!_backBtn) { _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backBtn setImage:[UIImage imageNamed:@"room_info_back"] forState:UIControlStateNormal]; + [_backBtn setImage:[[UIImage imageNamed:@"room_info_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBtn addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; } return _backBtn; diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m index 38123b6f..f1aaa8ac 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m @@ -78,6 +78,16 @@ for (UIView *obj in self.view.subviews) { [obj removeFromSuperview]; } + UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] style:UIBarButtonItemStyleDone target:self action:@selector(backClick)]; + leftBarButtonItem.tintColor = [DJDKMIMOMColor mainTextColor]; + self.navigationItem.rightBarButtonItem = nil; + self.navigationItem.leftBarButtonItem = nil; + if (isMSRTL()){ + self.navigationItem.rightBarButtonItem = leftBarButtonItem; + }else{ + self.navigationItem.leftBarButtonItem = leftBarButtonItem; + } + [self.presenter clearList]; self.tableView = nil; self.datasource = nil; @@ -88,6 +98,9 @@ [self.presenter getMineSettingDataSourceWith:self.userInfo]; } +-(void)backClick{ + [self.navigationController popViewControllerAnimated:YES]; +} - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; ///每次都需要刷新一个userinfo diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineSwitchLanguageVC.m b/YuMi/Modules/YMMine/View/Setting/XPMineSwitchLanguageVC.m index eed1b50e..f7ffb816 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineSwitchLanguageVC.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineSwitchLanguageVC.m @@ -48,14 +48,16 @@ language = @"ar"; } if ([language isEqualToString:@"ar"]) { +// [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; [UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; [UISearchBar appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; - [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; + } else { +// [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; [UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; [UISearchBar appearance].semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; - [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; + } [NSBundle setLanguageText:language]; diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m index 1f2fac8d..5ff8a0ba 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m @@ -73,7 +73,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m index e5c95646..0a4189ca 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m @@ -126,7 +126,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = kGetScaleWidth(12); layout.minimumInteritemSpacing = 0; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderTagView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderTagView.m index 8dc020b8..b89cc0c8 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderTagView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderTagView.m @@ -122,7 +122,7 @@ - (UIButton *)clickBtn{ if (!_clickBtn){ _clickBtn = [UIButton new]; - [_clickBtn setBackgroundImage:kImage(@"mine_info_tag_arrow") forState:UIControlStateNormal]; + [_clickBtn setBackgroundImage:[kImage(@"mine_info_tag_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; [_clickBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_clickBtn addTarget:self action:@selector(clickAction) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoNavView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoNavView.m index 31012eba..7d671b85 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoNavView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoNavView.m @@ -62,8 +62,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:5 bottom:10 left:8]; } diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoTagFlowLayout.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoTagFlowLayout.h index e99692e2..3eee22dc 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoTagFlowLayout.h +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoTagFlowLayout.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol EqualSpaceFlowLayoutDelegate @end -@interface XPMineUserInfoTagFlowLayout : UICollectionViewFlowLayout +@interface XPMineUserInfoTagFlowLayout : MSBaseRTLFlowLayout @property (nonatomic,weak) id delegate; @end diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m index 0d076283..69a95cc0 100644 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m @@ -59,7 +59,7 @@ - (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"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m index 42ac4b84..ceccfd61 100644 --- a/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m +++ b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m @@ -75,7 +75,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m index 49c2ca61..62c36b00 100644 --- a/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m +++ b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m @@ -172,7 +172,7 @@ - (UIImageView *)arrowImageView { if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; - _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"common_right_arrow"]ms_SetImageForRTL]; _arrowImageView.contentMode = UIViewContentModeScaleAspectFit; } return _arrowImageView; diff --git a/YuMi/Modules/YMMine/View/XPMineUserInfoRecordedSoundVC.m b/YuMi/Modules/YMMine/View/XPMineUserInfoRecordedSoundVC.m index a007a9e1..df0a82b2 100644 --- a/YuMi/Modules/YMMine/View/XPMineUserInfoRecordedSoundVC.m +++ b/YuMi/Modules/YMMine/View/XPMineUserInfoRecordedSoundVC.m @@ -451,7 +451,7 @@ UIKIT_EXTERN NSString * kUpdateSoundInfo; -(UIButton *)backBtn{ if (!_backBtn){ _backBtn = [UIButton new]; - [_backBtn setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_backBtn setImage:[kImage(@"common_nav_back")ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.m b/YuMi/Modules/YMMine/View/XPMineViewController.m index e8feaf1d..688d8a60 100644 --- a/YuMi/Modules/YMMine/View/XPMineViewController.m +++ b/YuMi/Modules/YMMine/View/XPMineViewController.m @@ -126,7 +126,7 @@ UIKIT_EXTERN NSString *kRequestRicket; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_recharge_card_show]; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_noble_card_show]; - + } - (void)viewDidAppear:(BOOL)animated { diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m index e732a529..4a3c0c1e 100644 --- a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m @@ -147,8 +147,8 @@ //- (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 setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; +// [_arrowButton setImage:[[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL] forState:UIControlStateSelected]; // [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; // } // return _arrowButton; @@ -156,7 +156,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(0,0, 0, 0); layout.itemSize = CGSizeMake((KScreenWidth - 50)/2, 18); layout.minimumLineSpacing = 0; diff --git a/YuMi/Modules/YMMonents/View/XPMomentListViewController.m b/YuMi/Modules/YMMonents/View/XPMomentListViewController.m index 80af32e7..97190aa9 100644 --- a/YuMi/Modules/YMMonents/View/XPMomentListViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMomentListViewController.m @@ -212,7 +212,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; CGFloat height = 220.0/165.0*width; diff --git a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m index 7c04b89a..7707e53c 100644 --- a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m +++ b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m @@ -107,7 +107,7 @@ - (UIButton *)backBtn { if (!_backBtn) { _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backBtn setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backBtn setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBtn addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; } return _backBtn; diff --git a/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m index bfb9fe0f..5383029d 100644 --- a/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m @@ -212,8 +212,8 @@ - (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 setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m index ca8978c9..4b9bbb3c 100644 --- a/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m @@ -414,8 +414,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; @@ -455,7 +455,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *flowLayout = [[MSBaseRTLFlowLayout alloc] init]; flowLayout.minimumInteritemSpacing = 10; flowLayout.minimumLineSpacing = 10; flowLayout.sectionInset = UIEdgeInsetsZero; diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.m b/YuMi/Modules/YMNewHome/Api/Api+Home.m index 27c40b69..2f2e29da 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.m +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.m @@ -15,7 +15,7 @@ /// @param complection 完成 /// @param uid 用户的uid + (void)homeTagComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - [self makeRequest:@"home/tag" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; + [self makeRequest:@"home/tagV2" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } /// 获取首页所有的直播tag diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m index 81623ded..94ce9838 100644 --- a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m @@ -82,7 +82,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(kGetScaleWidth(100), kGetScaleWidth(92)); layout.sectionInset = UIEdgeInsetsMake(0, kGetScaleWidth(12), 0, kGetScaleWidth(12)); layout.minimumLineSpacing = kGetScaleWidth(8); diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPHomeGameView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeGameView.m index ae2e5cae..a63b86ad 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPHomeGameView.m +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeGameView.m @@ -128,7 +128,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(kGetScaleWidth(98), kGetScaleWidth(118)); layout.sectionInset = UIEdgeInsetsMake(0, kGetScaleWidth(15), 0, kGetScaleWidth(15)); layout.minimumLineSpacing = kGetScaleWidth(15); diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m index 55cf1b04..e90bc650 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m @@ -116,7 +116,7 @@ #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(0, kGetScaleWidth(15), 0, kGetScaleWidth(15)); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = kGetScaleWidth(8); diff --git a/YuMi/Modules/YMNewHome/View/PIHoemCategoryCollectionView.m b/YuMi/Modules/YMNewHome/View/PIHoemCategoryCollectionView.m index af260bec..a41926f7 100644 --- a/YuMi/Modules/YMNewHome/View/PIHoemCategoryCollectionView.m +++ b/YuMi/Modules/YMNewHome/View/PIHoemCategoryCollectionView.m @@ -82,7 +82,7 @@ #pragma mark - 懒加载 - (UICollectionView *)pi_collectionView{ if (!_pi_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = kGetScaleWidth(10); layout.minimumInteritemSpacing = kGetScaleWidth(10); layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m index 1c12f679..cceb0a7a 100644 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m @@ -117,8 +117,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:5 bottom:10 left:8]; } diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m index c637d524..f543885d 100644 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m @@ -162,7 +162,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.headerReferenceSize = CGSizeMake(KScreenWidth, 200); layout.minimumLineSpacing = 8; layout.minimumInteritemSpacing = 0; diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m index dc4d355e..90e39453 100644 --- a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m @@ -374,7 +374,7 @@ NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey"; - (UICollectionView *)everyOneCollectionView{ if (!_everyOneCollectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 8; layout.minimumInteritemSpacing = 8; layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); @@ -433,7 +433,7 @@ NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey"; - (UICollectionView *)searchCollectionView{ if (!_searchCollectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 8; layout.minimumInteritemSpacing = 8; layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); @@ -450,7 +450,7 @@ NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey"; - (UICollectionView *)roomCollectionView{ if (!_roomCollectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 8; layout.minimumInteritemSpacing = 0; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m index 30436ae0..a6912fa9 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m @@ -195,7 +195,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumInteritemSpacing = kGetScaleWidth(6); layout.minimumLineSpacing = kGetScaleWidth(6); layout.sectionInset = UIEdgeInsetsMake(0, kGetScaleWidth(10), 0, kGetScaleWidth(10)); diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m index 883403cd..f5e85196 100644 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m @@ -351,7 +351,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityChoosePlayView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityChoosePlayView.m index 86c9c0d5..5bffff43 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityChoosePlayView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityChoosePlayView.m @@ -79,7 +79,7 @@ #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if(!_collectionView){ - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 8; layout.minimumInteritemSpacing = 8; layout.itemSize = CGSizeMake(48, 48); @@ -99,7 +99,7 @@ if(!_clickBtn){ _clickBtn = [UIButton new]; [_clickBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; - [_clickBtn setImage:kImage(@"pi_room_activity_choose_play_arrow") forState:UIControlStateNormal]; + [_clickBtn setImage:[kImage(@"pi_room_activity_choose_play_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; [_clickBtn addTarget:self action:@selector(clickBtnAction) forControlEvents:UIControlEventTouchUpInside]; } return _clickBtn; diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityClickView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityClickView.m index db98bb23..a3cae7c3 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityClickView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityClickView.m @@ -67,7 +67,7 @@ if(!_clickBtn){ _clickBtn = [UIButton new]; [_clickBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; - [_clickBtn setImage:kImage(@"pi_room_activity_click_arrow") forState:UIControlStateNormal]; + [_clickBtn setImage:[kImage(@"pi_room_activity_click_arrow")ms_SetImageForRTL] forState:UIControlStateNormal]; [_clickBtn addTarget:self action:@selector(clickBtnAction) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m index e836e0e9..81ce5d78 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m @@ -110,7 +110,7 @@ #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = kGetScaleWidth(8); layout.minimumInteritemSpacing = kGetScaleWidth(8); layout.itemSize = CGSizeMake(kGetScaleWidth(90), kGetScaleWidth(42)); diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m index 8476bc3d..8a495dba 100644 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m @@ -321,7 +321,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"home_search_white_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomTarrowBannerView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomTarrowBannerView.m index 5180bb52..2a512ea6 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomTarrowBannerView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomTarrowBannerView.m @@ -157,7 +157,7 @@ - (UIImageView *)bgImageView{ if(!_bgImageView){ _bgImageView = [UIImageView new]; - _bgImageView.image = kImage(@"room_tarrow_banner_bg"); + _bgImageView.image = [kImage(@"room_tarrow_banner_bg")ms_SetImageForRTL]; } return _bgImageView; } diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m index 6a9bf2a4..5af541f4 100644 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m @@ -134,7 +134,7 @@ }]; return; } - self.backImageView.image = [UIImage imageNamed:@"room_background"]; + self.backImageView.image = [[UIImage imageNamed:@"room_background"]ms_SetImageForRTL]; [self.svgDisplayView stopAnimation]; self.svgDisplayView.hidden = YES; self.backImageView.contentMode = UIViewContentModeScaleAspectFill; @@ -145,7 +145,7 @@ - (NetImageView *)backImageView { if (!_backImageView) { NetImageConfig *config = [[NetImageConfig alloc]init]; - config.placeHolder = [UIImage imageNamed:@"room_background"]; + config.placeHolder = [[UIImage imageNamed:@"room_background"]ms_SetImageForRTL]; _backImageView = [[NetImageView alloc] initWithConfig:config]; _backImageView.userInteractionEnabled = YES; diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m index e8145e33..19fbc73f 100644 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m @@ -158,7 +158,7 @@ - (UIImageView *)iconImageView { if (_iconImageView == nil) { _iconImageView = [[UIImageView alloc] init]; - _iconImageView.image = [UIImage imageNamed:@"room_position_little_game_right_arrow"]; + _iconImageView.image = [[UIImage imageNamed:@"room_position_little_game_right_arrow"]ms_SetImageForRTL]; _iconImageView.contentMode = UIViewContentModeScaleAspectFit; } diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m index 1e818c40..cfccb2df 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m @@ -194,7 +194,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backButton addTarget:self action:@selector(didClickCloseButton:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h index cd9b1282..eb4874f6 100644 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface XPRoomFaceCollectionFlowLayout : UICollectionViewFlowLayout +@interface XPRoomFaceCollectionFlowLayout : MSBaseRTLFlowLayout @end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m index d474764d..3e2f923e 100644 --- a/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m +++ b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m @@ -414,7 +414,7 @@ - (UICollectionView *)titleCollectionView{ if (!_titleCollectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.minimumLineSpacing = 15; _titleCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h index 977da49b..f8fc59f5 100644 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface XPFirstRechargeFlowLayout : UICollectionViewFlowLayout +@interface XPFirstRechargeFlowLayout : MSBaseRTLFlowLayout @end diff --git a/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameMiniStageView.m b/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameMiniStageView.m index 530d0385..b98b4a70 100644 --- a/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameMiniStageView.m +++ b/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameMiniStageView.m @@ -128,7 +128,7 @@ UIKIT_EXTERN NSString * const kRoomRoomLittleGameMiniStageNotificationKey; - (UIButton *)foldButton { if (!_foldButton) { _foldButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_foldButton setImage:[UIImage imageNamed:@"room_position_little_game_right_arrow"] forState:UIControlStateNormal]; + [_foldButton setImage:[[UIImage imageNamed:@"room_position_little_game_right_arrow"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_foldButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_foldButton addTarget:self action:@selector(tapAvatarRecognizer) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameRoomOpenView.m b/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameRoomOpenView.m index f0d499eb..99d05594 100644 --- a/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameRoomOpenView.m +++ b/YuMi/Modules/YMRoom/View/LittleGame/View/XPLittleGameRoomOpenView.m @@ -249,7 +249,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *flowLayout = [[MSBaseRTLFlowLayout alloc] init]; flowLayout.minimumLineSpacing = 0; flowLayout.minimumInteritemSpacing = 7; flowLayout.itemSize = CGSizeMake(98, 118); diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m index 604ea113..6bd50804 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m @@ -535,7 +535,7 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(24, 0, 10, 0); layout.itemSize = CGSizeMake(KScreenWidth /5, 50); layout.minimumLineSpacing = 12; diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m index b6d9801f..8b2a49d1 100644 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m @@ -166,7 +166,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.minimumInteritemSpacing = 8; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m index a88427bc..3cc779fc 100644 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m @@ -356,7 +356,7 @@ static NSString *const KXPReleaseRadioTableViewCellIdentifier = @"KXPReleaseRadi if (!_backView) { _backView = [[UIImageView alloc] init]; _backView.userInteractionEnabled = YES; - _backView.image = [UIImage imageNamed:@"room_radio_back"]; + _backView.image = [[UIImage imageNamed:@"room_radio_back"]ms_SetImageForRTL]; } return _backView; } diff --git a/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m index 2318b228..80703af9 100644 --- a/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m +++ b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m @@ -549,7 +549,7 @@ - (UIButton *)backBtn{ if (!_backBtn){ _backBtn = [UIButton new]; - [_backBtn setBackgroundImage:[UIImage imageNamed:@"common_nav_back_white"] forState:UIControlStateNormal]; + [_backBtn setBackgroundImage:[[UIImage imageNamed:@"common_nav_back_white"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backBtn addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backBtn setCornerWithLeftTopCorner:10 rightTopCorner:10 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(20,20)]; } diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m index d8b3b0e2..6843ad7c 100644 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m @@ -85,7 +85,7 @@ if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; _arrowImageView.userInteractionEnabled = YES; - _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"common_right_arrow"]ms_SetImageForRTL]; } return _arrowImageView; } diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m index 6b234125..22873880 100644 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m @@ -347,7 +347,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; _collectionView.dataSource = self; diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m index 732a2285..8c89bd6e 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m @@ -398,7 +398,7 @@ #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChooseGiftView.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChooseGiftView.m index ebeff5ea..8d278f49 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChooseGiftView.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChooseGiftView.m @@ -136,7 +136,7 @@ } - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.minimumLineSpacing = kGetScaleWidth(20); diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m index 6532dc00..77018ebd 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoGiftView.m @@ -113,7 +113,7 @@ - (UIImageView *)arrowView{ if(!_arrowView){ _arrowView = [UIImageView new]; - _arrowView.image = kImage(@"pi_room_photo_album_choose_photo_gift_arrow"); + _arrowView.image = [kImage(@"mine_info_tag_arrow")ms_SetImageForRTL]; } return _arrowView; } diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m index 8d618111..b52d374f 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m @@ -224,7 +224,7 @@ #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; layout.itemSize = CGSizeMake(kGetScaleWidth(100), kGetScaleWidth(102)); layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m index 2239cf12..8ff3ef37 100644 --- a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m @@ -93,7 +93,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(0, 21, 0, 21); layout.itemSize = CGSizeMake(42, 47 + 21); layout.minimumLineSpacing = 7; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h index 3e7df0b9..fc953217 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface XPGiftCollectionViewFlowLayout : UICollectionViewFlowLayout +@interface XPGiftCollectionViewFlowLayout : MSBaseRTLFlowLayout @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m index abe2d179..bd636e5d 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m @@ -94,7 +94,7 @@ - (UIImageView *)arrowImageView { if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; - _arrowImageView.image = [UIImage imageNamed:@"gift_bar_recharge_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"gift_bar_recharge_arrow"]ms_SetImageForRTL]; _arrowImageView.hidden = YES; } return _arrowImageView; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m index cd4a1a40..6b74060f 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m @@ -408,7 +408,7 @@ if (!_rechageImageView) { _rechageImageView = [[UIImageView alloc] init]; _rechageImageView.userInteractionEnabled = YES; - _rechageImageView.image = [UIImage imageNamed:@"gift_bar_recharge_arrow"]; + _rechageImageView.image = [[UIImage imageNamed:@"gift_bar_recharge_arrow"]ms_SetImageForRTL]; } return _rechageImageView; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m index 76bbd0a0..968f9f2b 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m @@ -146,7 +146,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)countCollectionView{ if (!_countCollectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(160, 28); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 0; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m index a4a1ee98..9ccca8ab 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m @@ -234,7 +234,7 @@ - (UIImageView *)arrowView{ if(!_arrowView){ _arrowView = [UIImageView new]; - _arrowView.image = kImage(@"gift_twelve_star_Banner_arrow"); + _arrowView.image = [kImage(@"gift_twelve_star_Banner_arrow")ms_SetImageForRTL]; } return _arrowView; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m index 12be5a0a..4d96d7e6 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m @@ -270,7 +270,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; layout.itemSize = CGSizeMake(38, 43); layout.minimumInteritemSpacing = 4; diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIRedPacketChooseTypeView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIRedPacketChooseTypeView.m index c2ce65f7..d8dfad0e 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIRedPacketChooseTypeView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIRedPacketChooseTypeView.m @@ -68,7 +68,7 @@ } - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; layout.itemSize = CGSizeMake(kGetScaleWidth(94), kGetScaleWidth(62)); layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m index 392d586c..27acf152 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m @@ -148,7 +148,7 @@ - (UIImageView *)arrowImageView { if (_arrowImageView == nil) { _arrowImageView = [[UIImageView alloc] init]; - _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + _arrowImageView.image = [[UIImage imageNamed:@"room_setting_arrow"]ms_SetImageForRTL]; [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; } diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m index 21e32e57..6a5c828b 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m @@ -262,7 +262,7 @@ - (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"]ms_SetImageForRTL] forState:UIControlStateNormal]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } @@ -295,7 +295,7 @@ _backImageView.userInteractionEnabled = YES; _backImageView.layer.masksToBounds = YES; _backImageView.contentMode = UIViewContentModeScaleAspectFill; - _backImageView.image = [UIImage imageNamed:@"room_background"]; + _backImageView.image = [[UIImage imageNamed:@"room_background"]ms_SetImageForRTL]; } return _backImageView; } diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m index 194802c9..3ade46aa 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m @@ -214,7 +214,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.minimumLineSpacing = 16; layout.minimumInteritemSpacing = 10; diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m index 86533249..dd734982 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m @@ -208,7 +208,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.minimumLineSpacing = 10; layout.minimumInteritemSpacing = 10; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFailyResultView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFailyResultView.m index 8a5de41c..e887effe 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFailyResultView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFailyResultView.m @@ -110,7 +110,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; CGFloat itemWidth = (KScreenWidth - 14 * 3 - 60) / 4.0; layout.itemSize = CGSizeMake(itemWidth, itemWidth + 23); layout.sectionInset = UIEdgeInsetsMake(0, 30, 0, 30); diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyExchangeView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyExchangeView.m index 4f9b5b13..678b21d1 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyExchangeView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyExchangeView.m @@ -210,7 +210,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; CGFloat scale = 234.0/165.0; CGFloat space = 15.0; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyFriendView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyFriendView.m index 36f38359..76120e47 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyFriendView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyFriendView.m @@ -214,8 +214,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyMyView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyMyView.m index 570796ea..6b4fa8b0 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyMyView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyMyView.m @@ -269,8 +269,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyNewSummonView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyNewSummonView.m index 3f6f2734..55623f9c 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyNewSummonView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyNewSummonView.m @@ -251,7 +251,7 @@ - (UICollectionView *)collectionView { if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; CGFloat space = (KScreenWidth - 169.0 * 2)/3 - 1; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m index b33d5189..c644f9cf 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m @@ -70,7 +70,7 @@ #pragma mark - Getters And Setters - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(90, 110); layout.minimumLineSpacing = 10; layout.minimumInteritemSpacing = 10; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyShopingView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyShopingView.m index cfe54b1d..7577251c 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyShopingView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyShopingView.m @@ -178,8 +178,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m index f87fc0cf..231b8c32 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m @@ -152,7 +152,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(90, 110); layout.sectionInset = UIEdgeInsetsMake(0, 13, 0, 13); layout.minimumLineSpacing = 10; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreView.m index 2b853f97..fdbd48ad 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyStoreView.m @@ -664,8 +664,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairySummonView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairySummonView.m index f6e014bc..3f55efe4 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairySummonView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairySummonView.m @@ -390,8 +390,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_shoping_left"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_leftButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_shoping_left"]ms_SetImageForRTL] forState:UIControlStateSelected]; _leftButton.transform = CGAffineTransformMakeRotation(-M_PI); [_leftButton addTarget:self action:@selector(leftButtonAction:) forControlEvents:UIControlEventTouchUpInside]; _leftButton.hidden = YES; @@ -402,8 +402,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_shoping_left"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_rightButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_shoping_left"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_rightButton addTarget:self action:@selector(rightButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyTrialsView.m b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyTrialsView.m index fd3dfcb8..f90e2551 100644 --- a/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyTrialsView.m +++ b/YuMi/Modules/YMRoom/View/TreasureFairy/View/View/XPTreasureFairyTrialsView.m @@ -192,8 +192,8 @@ - (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 setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"room_treasure_fairy_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m index 5da3a890..ef05ccc5 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m @@ -79,7 +79,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(60, 30); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 8; diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m index 61bc2d7c..4d09d45b 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m @@ -1390,7 +1390,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake((KScreenWidth - 45 * 2)/ 4, 55); layout.minimumLineSpacing = 16; layout.minimumInteritemSpacing = 0; diff --git a/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m index 8999e08a..ed25c177 100644 --- a/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m +++ b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m @@ -461,7 +461,7 @@ - (UICollectionView *)collectionView{ if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; layout.itemSize = CGSizeMake(30, 15); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 4; diff --git a/YuMi/Modules/YMWeb/XPWebViewController.m b/YuMi/Modules/YMWeb/XPWebViewController.m index 377317f8..00110608 100644 --- a/YuMi/Modules/YMWeb/XPWebViewController.m +++ b/YuMi/Modules/YMWeb/XPWebViewController.m @@ -187,11 +187,13 @@ NSString * const kJSSavePictureShare = @"savePictureShare"; } - (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)]; + UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClick)]; leftBarButtonItem.tintColor = [DJDKMIMOMColor mainTextColor]; - - self.navigationItem.leftBarButtonItem = leftBarButtonItem; + + self.navigationItem.leftBarButtonItem = leftBarButtonItem; + + } if (@available(iOS 11.0, *)) { self.webview.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; @@ -779,8 +781,8 @@ NSString * const kJSSavePictureShare = @"savePictureShare"; [_webview evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) { NSString *userAgent = result; - if (![userAgent containsString:@"pekoAppIos erbanAppIos"]){ - NSString *newUserAgent = [userAgent stringByAppendingString:@" pekoAppIos erbanAppIos"]; + if (![userAgent containsString:@"molistarAppIos erbanAppIos"]){ + NSString *newUserAgent = [userAgent stringByAppendingString:@" molistarAppIos erbanAppIos"]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; [[NSUserDefaults standardUserDefaults] synchronize]; diff --git a/YuMi/Modules/YMWeb/XPWebViewNavView.m b/YuMi/Modules/YMWeb/XPWebViewNavView.m index 6613aef0..7f91bd1d 100644 --- a/YuMi/Modules/YMWeb/XPWebViewNavView.m +++ b/YuMi/Modules/YMWeb/XPWebViewNavView.m @@ -56,8 +56,8 @@ - (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 setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateNormal]; + [_backButton setImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } diff --git a/YuMi/Network/HttpRequestHelper.m b/YuMi/Network/HttpRequestHelper.m index 6d6f13fc..a7d2b4c2 100644 --- a/YuMi/Network/HttpRequestHelper.m +++ b/YuMi/Network/HttpRequestHelper.m @@ -237,6 +237,7 @@ + (NSDictionary*)configBaseParmars:(NSDictionary *)parmars { NSDictionary *defaultBasciParame = @{ + @"Accept-Language" : [NSBundle uploadLanguageText], @"os" : @"iOS", @"osVersion" : [YYUtility systemVersion], @"netType" : ([YYUtility networkStatus] == ReachableViaWiFi) ? @2 : @1, @@ -247,7 +248,7 @@ @"appVersion" : [YYUtility appVersion], @"app" : [YYUtility appName], @"lang" : [YYUtility getLanguage], - @"Accept-Language" : [NSBundle uploadLanguageText], + }; if (!parmars||![parmars isKindOfClass:[NSDictionary class]]){ diff --git a/YuMi/Structure/Base/BaseNavigationController.m b/YuMi/Structure/Base/BaseNavigationController.m index 07e6d7d8..bb22cb2d 100644 --- a/YuMi/Structure/Base/BaseNavigationController.m +++ b/YuMi/Structure/Base/BaseNavigationController.m @@ -27,9 +27,13 @@ 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)]; + UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"common_nav_back"]ms_SetImageForRTL] style:UIBarButtonItemStyleDone target:self action:@selector(backClick)]; leftBarButtonItem.tintColor = [DJDKMIMOMColor mainTextColor]; - viewController.navigationItem.leftBarButtonItem = leftBarButtonItem; + + + viewController.navigationItem.leftBarButtonItem = leftBarButtonItem; + + } viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; diff --git a/YuMi/Structure/PrefixHeader.pch b/YuMi/Structure/PrefixHeader.pch index 2bd37264..6e54cd25 100644 --- a/YuMi/Structure/PrefixHeader.pch +++ b/YuMi/Structure/PrefixHeader.pch @@ -59,4 +59,5 @@ isEnterprise = [bundleID isEqualToString:@"com.hflighting.yumi"];\ #import "PLTimeUtil.h" #import "UIImage+ImageEffects.h" #import "UIImage+MSRTL.h" +#import "MSBaseRTLFlowLayout.h" #endif /* PrefixHeader_pch */ diff --git a/YuMi/Tools/Bundle/NSBundle+Localizable.m b/YuMi/Tools/Bundle/NSBundle+Localizable.m index 48fa5e34..9a040e68 100644 --- a/YuMi/Tools/Bundle/NSBundle+Localizable.m +++ b/YuMi/Tools/Bundle/NSBundle+Localizable.m @@ -55,6 +55,13 @@ +(NSString *)uploadLanguageText{ NSString *saveLanguage = [[NSUserDefaults standardUserDefaults]valueForKey:@"kSaveCurLanguage"]; if (saveLanguage){ + if ([saveLanguage hasPrefix:@"zh"]) { + return @"zh"; + }else if([saveLanguage hasPrefix:@"ar"]){///阿拉伯语 + saveLanguage = @"ar"; + }else{///英文 + saveLanguage = @"en"; + } return saveLanguage; } NSString *language = [NSLocale preferredLanguages].firstObject; diff --git a/YuMi/Tools/YYUtility/YYUtility+App.m b/YuMi/Tools/YYUtility/YYUtility+App.m index 9e0495e5..21733087 100644 --- a/YuMi/Tools/YYUtility/YYUtility+App.m +++ b/YuMi/Tools/YYUtility/YYUtility+App.m @@ -38,8 +38,7 @@ if([isProduction isEqualToString:@"YES"]){ return @"youmi"; } - NSString *text = [NSString stringWithFormat:@"%@%@%@%@",@"p",@"e",@"k",@"o"]; - return text; + return @"molistar"; #else diff --git a/YuMi/ar.lproj/Localizable.strings b/YuMi/ar.lproj/Localizable.strings index 1e30e5f3..39b889d1 100644 --- a/YuMi/ar.lproj/Localizable.strings +++ b/YuMi/ar.lproj/Localizable.strings @@ -658,7 +658,7 @@ "XPLoginPwdViewController3" = "الرجاء إدخال كلمة المرور"; "XPLoginPwdViewController4" = "تسجيل الدخول برقم الهاتف"; "XPLoginPwdViewController5" = "نسيت كلمة المرور"; -"XPLoginPwdViewController6" = "الرجاء إدخال حساب Moli Star"; +"XPLoginPwdViewController6" = "الرجاء إدخال حساب MoliStar"; "XPLoginBindPhoneResultViewController0" = "ربط الهاتف"; "XPLoginBindPhoneResultViewController1" = "رقم الهاتف المرتبط حاليًا هو"; @@ -696,7 +696,7 @@ "XPShareView5" = "فشلت عملية المشاركة"; "XPShareView6" = "إلغاء المشاركة"; "XPShareView7" = "إلغاء"; -"XPShareView8" = "تعال إلى Moli Star واكتشف صوتك الخاص"; +"XPShareView8" = "تعال إلى MoliStar واكتشف صوتك الخاص"; "XPShareView9" = "التطبيق غير مثبت، فشلت عملية المشاركة"; ///XPFirstRechargeViewController.m @@ -1861,7 +1861,7 @@ ineHeadView12" = "الحمل"; "RoomHeaderView2" = "متصل: %ld ID: %ld"; "RoomHeaderView3" = "نسخ الرابط"; -"RoomHeaderView4" = "تعال إلى Moli Star، ولنلعب ونتعارف ونلعب ألعابًا"; +"RoomHeaderView4" = "تعال إلى MoliStar، ولنلعب ونتعارف ونلعب ألعابًا"; "RoomHeaderView5" = "شخص جميل وصوت حلو يحقق الانتصارات، هيا لنلعب معًا~"; "RoomHeaderView6" = "تمت الإضافة للمفضلة بنجاح"; "RoomHeaderView7" = "تمت المشاركة بنجاح"; @@ -2839,7 +2839,7 @@ ineHeadView12" = "الحمل"; "XPLoginPwdViewController3" = "الرجاء إدخال كلمة المرور"; "XPLoginPwdViewController4" = "تسجيل الدخول باستخدام رقم الهاتف"; "XPLoginPwdViewController5" = "نسيت كلمة المرور"; -"XPLoginPwdViewController6" = "الرجاء إدخال حساب Moli Star الخاص بك"; +"XPLoginPwdViewController6" = "الرجاء إدخال حساب MoliStar الخاص بك"; "XPLoginBindPhoneResultViewController0" = "ربط الهاتف"; "XPLoginBindPhoneResultViewController1" = "رقم الهاتف المرتبط بك حاليًا هو"; @@ -3576,7 +3576,7 @@ ineHeadView12" = "الحمل"; "PIMessageContentServiceReplyView0"="كيفية الشحن:"; "PIMessageContentServiceReplyView1"="نسخ"; -"PIMessageContentServiceReplyView2"="1. انتقل إلى الشحن الداخلي في تطبيق Moli Star Voice - My - الشحن الألماسي لشحن الألماس"; +"PIMessageContentServiceReplyView2"="1. انتقل إلى الشحن الداخلي في تطبيق MoliStar Voice - My - الشحن الألماسي لشحن الألماس"; "PIMessageContentServiceReplyView3"="2. اتصل بخدمة العملاء للحصول على رابط الشحن"; "PIMessageContentServiceReplyView4"="WeChat لخدمة العملاء: %@ "; "PIMessageContentServiceReplyView5"="Line لخدمة العملاء: %@ "; diff --git a/YuMi/en.lproj/InfoPlist.strings b/YuMi/en.lproj/InfoPlist.strings index 4a2e0449..9265f9bf 100644 --- a/YuMi/en.lproj/InfoPlist.strings +++ b/YuMi/en.lproj/InfoPlist.strings @@ -6,10 +6,10 @@ */ -NSCameraUsageDescription ="\"Moli Star\" needs your consent before you can visit, take photos and upload your pictures, and then display them on your personal homepage for others to view"; +NSCameraUsageDescription ="\"MoliStar\" needs your consent before you can visit, take photos and upload your pictures, and then display them on your personal homepage for others to view"; NSLocalNetworkUsageDescription ="The app will discover and connect to devices on your network"; NSLocationWhenInUseUsageDescription = "Your consent is required before you can use location services and recommend nearby friends"; -NSMicrophoneUsageDescription = "\"Moli Star\" needs your consent before it can conduct voice chat"; -NSPhotoLibraryAddUsageDescription = "\"Moli Star\" needs your consent before it can store photos in the album"; -NSPhotoLibraryUsageDescription = "\"Moli Star\" needs your consent before you can access the album and select the pictures you need to upload, and then display them on your personal homepage for others to view"; +NSMicrophoneUsageDescription = "\"MoliStar\" needs your consent before it can conduct voice chat"; +NSPhotoLibraryAddUsageDescription = "\"MoliStar\" needs your consent before it can store photos in the album"; +NSPhotoLibraryUsageDescription = "\"MoliStar\" needs your consent before you can access the album and select the pictures you need to upload, and then display them on your personal homepage for others to view"; NSUserTrackingUsageDescription = "Please allow us to obtain your idfa permission to provide you with personalized activities and services. your information will not be used for other purposes without your permission"; diff --git a/YuMi/en.lproj/Localizable.strings b/YuMi/en.lproj/Localizable.strings index 0ab08e90..d8e9c3b9 100644 --- a/YuMi/en.lproj/Localizable.strings +++ b/YuMi/en.lproj/Localizable.strings @@ -404,7 +404,7 @@ "XPLoginPwdViewController3" = "Please enter a password"; "XPLoginPwdViewController4" = "Phone number login"; "XPLoginPwdViewController5" = "Forgot password"; -"XPLoginPwdViewController6" = "Please enter a Moli Star account"; +"XPLoginPwdViewController6" = "Please enter a MoliStar account"; "XPLoginBindPhoneResultViewController0" = "Bind phone"; "XPLoginBindPhoneResultViewController1" = "Your current bound phone number is"; @@ -466,7 +466,7 @@ "XPShareView5" = "Share failed"; "XPShareView6" = "Cancel sharing"; "XPShareView7" = "Cancel"; -"XPShareView8" = "Come to Moli Star and meet your exclusive voice"; +"XPShareView8" = "Come to MoliStar and meet your exclusive voice"; "XPShareView9" = "Failed to share due to the absence of related apps"; "XPFirstRechargeViewController0" = "1. Each person can only receive the first recharge benefit once\n2. Each ID and device can only participate once."; "XPFirstRechargeViewController1" = "Recharge now"; @@ -527,7 +527,7 @@ "HttpRequestHelper6" = "Please check network connection"; "HttpRequestHelper7" = "Login session has expired."; -"AppDelegate_ThirdConfig0" = "Moli Star"; +"AppDelegate_ThirdConfig0" = "MoliStar"; "XPMineNotificaPresenter0" = "System Notifications"; "XPMineNotificaPresenter1" = "When turned off, system messages and official assistants will no longer prompt"; @@ -937,7 +937,7 @@ "XPIAPRechargeViewController2" = "Confirm Recharge"; "XPIAPRechargeViewController3" = "《User Recharge Agreement》"; "XPIAPRechargeViewController4" = "I have read and agree"; -"XPIAPRechargeViewController5" = "For any questions, please contact customer service, Moli Star ID"; +"XPIAPRechargeViewController5" = "For any questions, please contact customer service, MoliStar ID"; "XPIAPRechargeViewController6" = "My Account"; "XPIAPRechargeViewController7" = "Reminder"; "XPIAPRechargeViewController8" = "Recharge failed. Please contact customer service for assistance."; @@ -1637,7 +1637,7 @@ "RoomHeaderView1" = "Online: %ld   ID: %ld"; "RoomHeaderView2" = "Online: %ld   ID: %ld"; "RoomHeaderView3" = "Copy Link"; -"RoomHeaderView4" = "Come to Moli Star, play games and make friends"; +"RoomHeaderView4" = "Come to MoliStar, play games and make friends"; "RoomHeaderView5" = "Beautiful people with sweet voices win points, let's play together~"; "RoomHeaderView6" = "Bookmark Successful"; "RoomHeaderView7" = "Share Successful"; @@ -2326,7 +2326,7 @@ "XPLoginPwdViewController3" = "Please enter password"; "XPLoginPwdViewController4" = "Phone Number Login"; "XPLoginPwdViewController5" = "Forget Password"; -"XPLoginPwdViewController6" = "Please enter your Moli Star account"; +"XPLoginPwdViewController6" = "Please enter your MoliStar account"; "XPLoginBindPhoneResultViewController0" = "Bind Phone"; "XPLoginBindPhoneResultViewController1" = "The current bound phone number is"; @@ -3418,7 +3418,7 @@ "PIMessageContentServiceReplyView0"="How to Top-Up:"; "PIMessageContentServiceReplyView1"="Copy"; -"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Diamonds】 inside Moli Star Voice App to top-up"; +"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Diamonds】 inside MoliStar Voice App to top-up"; "PIMessageContentServiceReplyView3"="2. Contact customer service to get top-up link"; "PIMessageContentServiceReplyView4"="Customer Service WeChat: %@ "; "PIMessageContentServiceReplyView5"="Customer Service Line: %@ "; diff --git a/YuMi/zh-Hans.lproj/InfoPlist.strings b/YuMi/zh-Hans.lproj/InfoPlist.strings index 323f1f58..ea155724 100644 --- a/YuMi/zh-Hans.lproj/InfoPlist.strings +++ b/YuMi/zh-Hans.lproj/InfoPlist.strings @@ -5,10 +5,10 @@ Created by 冯硕 on 2022/10/13. */ -NSCameraUsageDescription = "“Moli Star”需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看"; +NSCameraUsageDescription = "“MoliStar”需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看"; NSLocalNetworkUsageDescription = "此App将可发现和连接到您所用网络上的设备"; NSLocationWhenInUseUsageDescription = "需要您的同意,才可以进行定位服务,推荐附近好友"; -NSMicrophoneUsageDescription = "“Moli Star”需要您的同意,才可以进行语音聊天"; -NSPhotoLibraryAddUsageDescription = "“Moli Star”需要您的同意,才可以存储相片到相册"; -NSPhotoLibraryUsageDescription = "“Moli Star”需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看"; +NSMicrophoneUsageDescription = "“MoliStar”需要您的同意,才可以进行语音聊天"; +NSPhotoLibraryAddUsageDescription = "“MoliStar”需要您的同意,才可以存储相片到相册"; +NSPhotoLibraryUsageDescription = "“MoliStar”需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看"; NSUserTrackingUsageDescription = "请允许我们获取您的IDFA权限,可以为您提供个性化活动和服务。未经您的允许,您的信息将不作其他用途"; diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index 074a078f..f736df57 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -59,7 +59,7 @@ "XPShareView5" = "分享失败"; "XPShareView6" = "取消分享"; "XPShareView7" = "取消"; -"XPShareView8" = "来Moli Star,邂逅你的专属声音"; +"XPShareView8" = "来MoliStar,邂逅你的专属声音"; "XPShareView9" = "未安装相关App,分享失败"; ///XPFirstRechargeViewController.m "XPFirstRechargeViewController0" = "1.每人仅可获得1次首充福利\n2.每个ID、设备仅能参加一次。"; @@ -134,7 +134,7 @@ "HttpRequestHelper7" = "登录已过期。"; -"AppDelegate_ThirdConfig0" = "Moli Star"; +"AppDelegate_ThirdConfig0" = "MoliStar"; "XPMineNotificaPresenter0" = "系统通知"; "XPMineNotificaPresenter1" = "关闭后,系统消息和官方小秘书不再提示"; @@ -539,7 +539,7 @@ "XPIAPRechargeViewController2" = "确定充值"; "XPIAPRechargeViewController3" = "《用户充值协议》"; "XPIAPRechargeViewController4" = "已阅读并同意"; -"XPIAPRechargeViewController5" = "如有任何问题请咨询客服,Moli Star号"; +"XPIAPRechargeViewController5" = "如有任何问题请咨询客服,MoliStar号"; "XPIAPRechargeViewController6" = "我的账户"; "XPIAPRechargeViewController7" = "提示"; "XPIAPRechargeViewController8" = "储值失败,请联系客服处理~"; @@ -1251,7 +1251,7 @@ "RoomHeaderView1" = "在线:%ld ID:%ld"; "RoomHeaderView2" = "在线:%ld ID:%ld"; "RoomHeaderView3" = "複制链接"; -"RoomHeaderView4" = "来Moli Star,开黑交友玩游戏"; +"RoomHeaderView4" = "来MoliStar,开黑交友玩游戏"; "RoomHeaderView5" = "人美声甜带上分,一起来玩吧~"; "RoomHeaderView6" = "收藏成功"; "RoomHeaderView7" = "分享成功"; @@ -2216,7 +2216,7 @@ "XPLoginPwdViewController3" = "请输入密码"; "XPLoginPwdViewController4" = "手机号登录"; "XPLoginPwdViewController5" = "忘记密码"; -"XPLoginPwdViewController6" = "请输入Moli Star账号"; +"XPLoginPwdViewController6" = "请输入MoliStar账号"; "XPLoginBindPhoneResultViewController0" = "绑定手机"; "XPLoginBindPhoneResultViewController1" = "您当前绑定的手机号为"; @@ -3087,7 +3087,7 @@ "PIMessageContentServiceReplyView0"="如何储值:"; "PIMessageContentServiceReplyView1"="复制"; -"PIMessageContentServiceReplyView2"="1.在Moli Star语音App内前往【我的】-- 【储值钻\n石】进行储值"; +"PIMessageContentServiceReplyView2"="1.在MoliStar语音App内前往【我的】-- 【储值钻\n石】进行储值"; "PIMessageContentServiceReplyView3"="2.联系客服获取储值链接"; "PIMessageContentServiceReplyView4"="客服WeChat: %@ "; "PIMessageContentServiceReplyView5"="客服Line:%@ "; @@ -3243,3 +3243,22 @@ "XPMineSwitchLanguageVC0"="语言设置"; "XPMineSwitchLanguageVC1"="保存"; +"MJRefreshHeaderIdleText" = "下拉可以刷新"; +"MJRefreshHeaderPullingText" = "松开立即刷新"; +"MJRefreshHeaderRefreshingText" = "正在刷新数据中..."; + +"MJRefreshTrailerIdleText" = "滑动查看图文详情"; +"MJRefreshTrailerPullingText" = "释放查看图文详情"; + +"MJRefreshAutoFooterIdleText" = "点击或上拉加载更多"; +"MJRefreshAutoFooterRefreshingText" = "正在加载更多的数据..."; +"MJRefreshAutoFooterNoMoreDataText" = "已经全部加载完毕"; + +"MJRefreshBackFooterIdleText" = "上拉可以加载更多"; +"MJRefreshBackFooterPullingText" = "松开立即加载更多"; +"MJRefreshBackFooterRefreshingText" = "正在加载更多的数据..."; +"MJRefreshBackFooterNoMoreDataText" = "已经全部加载完毕"; + +"MJRefreshHeaderLastTimeText" = "最后更新:"; +"MJRefreshHeaderDateTodayText" = "今天"; +"MJRefreshHeaderNoneLastDateText" = "无记录"; diff --git a/YuMi/zh-Hant.lproj/InfoPlist.strings b/YuMi/zh-Hant.lproj/InfoPlist.strings index 1f7211ec..7b711b4a 100644 --- a/YuMi/zh-Hant.lproj/InfoPlist.strings +++ b/YuMi/zh-Hant.lproj/InfoPlist.strings @@ -5,10 +5,10 @@ Created by 冯硕 on 2022/10/13. */ -NSCameraUsageDescription = "「Moli Star」需要您的同意,才可以訪問進行拍照並上傳您的圖片,然後展示在您的個人主頁上,便於他人查看"; +NSCameraUsageDescription = "「MoliStar」需要您的同意,才可以訪問進行拍照並上傳您的圖片,然後展示在您的個人主頁上,便於他人查看"; NSLocalNetworkUsageDescription = "此App將可發現和連接到您所用網絡上的設備"; NSLocationWhenInUseUsageDescription = "需要您的同意,才可以進行定位服務,推薦附近好友"; -NSMicrophoneUsageDescription = "「Moli Star」需要您的同意,才可以進行語音聊天"; -NSPhotoLibraryAddUsageDescription = "「Moli Star」需要您的同意,才可以存儲相片到相冊"; -NSPhotoLibraryUsageDescription = "「Moli Star」需要您的同意,才可以訪問相冊並選擇您需要上傳的圖片,然後展示在您的個人主頁上,便於他人查看"; +NSMicrophoneUsageDescription = "「MoliStar」需要您的同意,才可以進行語音聊天"; +NSPhotoLibraryAddUsageDescription = "「MoliStar」需要您的同意,才可以存儲相片到相冊"; +NSPhotoLibraryUsageDescription = "「MoliStar」需要您的同意,才可以訪問相冊並選擇您需要上傳的圖片,然後展示在您的個人主頁上,便於他人查看"; NSUserTrackingUsageDescription = "請允許我們獲取您的IDFA權限,可以為您提供個性化活動和服務。未經您的允許,您的信息將不作其他用途"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index b048e0da..6b355e7b 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -59,7 +59,7 @@ "XPShareView5" = "分享失敗"; "XPShareView6" = "取消分享"; "XPShareView7" = "取消"; -"XPShareView8" = "來Moli Star,邂逅你的專屬聲音"; +"XPShareView8" = "來MoliStar,邂逅你的專屬聲音"; "XPShareView9" = "未安装相关App,分享失败"; ///XPFirstRechargeViewController.m "XPFirstRechargeViewController0" = "1.每人僅可獲得1次首充福利\n2.每個ID、設備僅能參加一次。"; @@ -133,7 +133,7 @@ "HttpRequestHelper7" = "登錄已過期。"; -"AppDelegate_ThirdConfig0" = "Moli Star"; +"AppDelegate_ThirdConfig0" = "MoliStar"; "XPMineNotificaPresenter0" = "系統通知"; "XPMineNotificaPresenter1" = "關閉後,系統消息和官方小秘書不再提示"; @@ -540,7 +540,7 @@ "XPIAPRechargeViewController2" = "確定充值"; "XPIAPRechargeViewController3" = "《用戶充值協議》"; "XPIAPRechargeViewController4" = "已閱讀並同意"; -"XPIAPRechargeViewController5" = "如有任何問題請咨詢客服,Moli Star號"; +"XPIAPRechargeViewController5" = "如有任何問題請咨詢客服,MoliStar號"; "XPIAPRechargeViewController6" = "我的賬戶"; "XPIAPRechargeViewController7" = "提示"; "XPIAPRechargeViewController8" = "儲值失敗,請聯系客服處理~"; @@ -1252,7 +1252,7 @@ "RoomHeaderView1" = "在線:%ld ID:%ld"; "RoomHeaderView2" = "在線:%ld ID:%ld"; "RoomHeaderView3" = "複製鏈接"; -"RoomHeaderView4" = "來Moli Star,開黑交友玩遊戲"; +"RoomHeaderView4" = "來MoliStar,開黑交友玩遊戲"; "RoomHeaderView5" = "人美聲甜帶上分,一起來玩吧~"; "RoomHeaderView6" = "收藏成功"; "RoomHeaderView7" = "分享成功"; @@ -2209,7 +2209,7 @@ "XPLoginPwdViewController3" = "請輸入密碼"; "XPLoginPwdViewController4" = "手機號登錄"; "XPLoginPwdViewController5" = "忘記密碼"; -"XPLoginPwdViewController6" = "請輸入Moli Star賬號"; +"XPLoginPwdViewController6" = "請輸入MoliStar賬號"; "XPLoginBindPhoneResultViewController0" = "綁定手機"; "XPLoginBindPhoneResultViewController1" = "您當前綁定的手機號為"; @@ -3075,7 +3075,7 @@ "PIMessageContentServiceReplyView0"="如何儲值:"; "PIMessageContentServiceReplyView1"="復製"; -"PIMessageContentServiceReplyView2"="1.在Moli Star語音App內前往【我的】-- 【儲值鉆\n石】進行儲值"; +"PIMessageContentServiceReplyView2"="1.在MoliStar語音App內前往【我的】-- 【儲值鉆\n石】進行儲值"; "PIMessageContentServiceReplyView3"="2.聯系客服獲取儲值鏈接"; "PIMessageContentServiceReplyView4"="客服WeChat: %@ "; "PIMessageContentServiceReplyView5"="客服Line:%@ "; @@ -3235,3 +3235,22 @@ "XPMineSwitchLanguageVC0"="語言設置"; "XPMineSwitchLanguageVC1"="保存"; +"MJRefreshHeaderIdleText" = "下拉可以刷新"; +"MJRefreshHeaderPullingText" = "鬆開立即刷新"; +"MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; + +"MJRefreshTrailerIdleText" = "滑動查看圖文詳情"; +"MJRefreshTrailerPullingText" = "釋放查看圖文詳情"; + +"MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; +"MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; +"MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; + +"MJRefreshBackFooterIdleText" = "上拉可以加載更多"; +"MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; +"MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; +"MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; + +"MJRefreshHeaderLastTimeText" = "最後更新:"; +"MJRefreshHeaderDateTodayText" = "今天"; +"MJRefreshHeaderNoneLastDateText" = "無記錄";