粉丝团开通特权弹窗
@@ -182,6 +182,8 @@
|
||||
9BB5495F2782E9DB0090CD26 /* NobleAuthInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5495E2782E9DB0090CD26 /* NobleAuthInfo.m */; };
|
||||
9BB549622782EA1D0090CD26 /* NobleInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB549612782EA1D0090CD26 /* NobleInfo.m */; };
|
||||
9BB54966278303EB0090CD26 /* XPNobleCenterNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB54965278303EB0090CD26 /* XPNobleCenterNavView.m */; };
|
||||
9BB89DC327FE7F3A00586A83 /* XPAnchorFansRelationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */; };
|
||||
9BB89DC627FEB9E100586A83 /* XPAnchorFansTaskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */; };
|
||||
9BBC02872786D75C0007C24B /* XPNobleUpgradeLevelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC02862786D75C0007C24B /* XPNobleUpgradeLevelView.m */; };
|
||||
9BBC028B2786E05A0007C24B /* XPNobleCenterEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC028A2786E05A0007C24B /* XPNobleCenterEntranceView.m */; };
|
||||
9BBC028E2786FA060007C24B /* NobleCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC028D2786FA060007C24B /* NobleCardModel.m */; };
|
||||
@@ -208,6 +210,9 @@
|
||||
9BD9A18027A0EFC7004186FE /* XPMineVisitorTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17F27A0EFC7004186FE /* XPMineVisitorTableViewCell.m */; };
|
||||
9BD9A18427A0F128004186FE /* XPMineVisitorItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18327A0F128004186FE /* XPMineVisitorItemModel.m */; };
|
||||
9BD9A18727A120FD004186FE /* XPMineVisitorUnReadModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18627A120FD004186FE /* XPMineVisitorUnReadModel.m */; };
|
||||
9BDA3E7727FD41C200517FE6 /* XPAnchorFansTeamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */; };
|
||||
9BDA3E7A27FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */; };
|
||||
9BDA3E7D27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */; };
|
||||
9BE29A6B27D1BFF700446AB5 /* anchor_room_speak.svga in Resources */ = {isa = PBXBuildFile; fileRef = 9BE29A6927D1BFF700446AB5 /* anchor_room_speak.svga */; };
|
||||
9BE29A6D27D210A500446AB5 /* anchor_room_bg.svga in Resources */ = {isa = PBXBuildFile; fileRef = 9BE29A6C27D210A500446AB5 /* anchor_room_bg.svga */; };
|
||||
9BEE3D0E27853BD000C83219 /* ThemeColor+NobleCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BEE3D0D27853BD000C83219 /* ThemeColor+NobleCenter.m */; };
|
||||
@@ -951,6 +956,10 @@
|
||||
9BB54964278303EB0090CD26 /* XPNobleCenterNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterNavView.h; sourceTree = "<group>"; };
|
||||
9BB54965278303EB0090CD26 /* XPNobleCenterNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterNavView.m; sourceTree = "<group>"; };
|
||||
9BB865B4272076140029CDE0 /* RtcImplDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcImplDelegate.h; sourceTree = "<group>"; };
|
||||
9BB89DC127FE7F3A00586A83 /* XPAnchorFansRelationModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansRelationModel.h; sourceTree = "<group>"; };
|
||||
9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansRelationModel.m; sourceTree = "<group>"; };
|
||||
9BB89DC427FEB9E100586A83 /* XPAnchorFansTaskViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTaskViewController.h; sourceTree = "<group>"; };
|
||||
9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTaskViewController.m; sourceTree = "<group>"; };
|
||||
9BBC02852786D75C0007C24B /* XPNobleUpgradeLevelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleUpgradeLevelView.h; sourceTree = "<group>"; };
|
||||
9BBC02862786D75C0007C24B /* XPNobleUpgradeLevelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleUpgradeLevelView.m; sourceTree = "<group>"; };
|
||||
9BBC02892786E05A0007C24B /* XPNobleCenterEntranceView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterEntranceView.h; sourceTree = "<group>"; };
|
||||
@@ -1006,6 +1015,13 @@
|
||||
9BD9A18327A0F128004186FE /* XPMineVisitorItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorItemModel.m; sourceTree = "<group>"; };
|
||||
9BD9A18527A120FD004186FE /* XPMineVisitorUnReadModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorUnReadModel.h; sourceTree = "<group>"; };
|
||||
9BD9A18627A120FD004186FE /* XPMineVisitorUnReadModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorUnReadModel.m; sourceTree = "<group>"; };
|
||||
9BDA3E7527FD41C200517FE6 /* XPAnchorFansTeamViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamViewController.h; sourceTree = "<group>"; };
|
||||
9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamViewController.m; sourceTree = "<group>"; };
|
||||
9BDA3E7827FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamEntranceView.h; sourceTree = "<group>"; };
|
||||
9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamEntranceView.m; sourceTree = "<group>"; };
|
||||
9BDA3E7B27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamPresenter.h; sourceTree = "<group>"; };
|
||||
9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamPresenter.m; sourceTree = "<group>"; };
|
||||
9BDA3E7F27FD480D00517FE6 /* XPAnchorFansTeamProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamProtocol.h; sourceTree = "<group>"; };
|
||||
9BE29A6927D1BFF700446AB5 /* anchor_room_speak.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = anchor_room_speak.svga; sourceTree = "<group>"; };
|
||||
9BE29A6C27D210A500446AB5 /* anchor_room_bg.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = anchor_room_bg.svga; sourceTree = "<group>"; };
|
||||
9BEE3D0C27853BD000C83219 /* ThemeColor+NobleCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+NobleCenter.h"; sourceTree = "<group>"; };
|
||||
@@ -2526,6 +2542,7 @@
|
||||
9B7B605827BB52FD0070BB72 /* AnchorView */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDA3E7227FD40DC00517FE6 /* FansTeam */,
|
||||
9B7B606327BBA0D40070BB72 /* Model */,
|
||||
9B7B606027BB96E40070BB72 /* XPRoomAnchorInfoCardView.h */,
|
||||
9B7B606127BB96E40070BB72 /* XPRoomAnchorInfoCardView.m */,
|
||||
@@ -2983,6 +3000,64 @@
|
||||
path = Visitor;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E6F27FD401100517FE6 /* Api */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = Api;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E7027FD401700517FE6 /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDA3E7527FD41C200517FE6 /* XPAnchorFansTeamViewController.h */,
|
||||
9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */,
|
||||
9BDA3E7827FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.h */,
|
||||
9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */,
|
||||
9BB89DC427FEB9E100586A83 /* XPAnchorFansTaskViewController.h */,
|
||||
9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E7127FD401C00517FE6 /* Presenter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDA3E7B27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.h */,
|
||||
9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */,
|
||||
);
|
||||
path = Presenter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E7227FD40DC00517FE6 /* FansTeam */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDA3E7E27FD47FB00517FE6 /* Protocol */,
|
||||
9BDA3E7327FD417900517FE6 /* Model */,
|
||||
9BDA3E7127FD401C00517FE6 /* Presenter */,
|
||||
9BDA3E6F27FD401100517FE6 /* Api */,
|
||||
9BDA3E7027FD401700517FE6 /* View */,
|
||||
);
|
||||
path = FansTeam;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E7327FD417900517FE6 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BB89DC127FE7F3A00586A83 /* XPAnchorFansRelationModel.h */,
|
||||
9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDA3E7E27FD47FB00517FE6 /* Protocol */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDA3E7F27FD480D00517FE6 /* XPAnchorFansTeamProtocol.h */,
|
||||
);
|
||||
path = Protocol;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BFB922F5D81845AC32D1E1ED /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -5166,6 +5241,7 @@
|
||||
E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */,
|
||||
E80DE4072775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m in Sources */,
|
||||
E8899C822785A694007944BE /* DatingInfoModel.m in Sources */,
|
||||
9BB89DC327FE7F3A00586A83 /* XPAnchorFansRelationModel.m in Sources */,
|
||||
E8C6FFD72754BC61004DC9F0 /* XPHomeNavView.m in Sources */,
|
||||
E8AC723226F49710007D6E91 /* XPMineNotificationTableViewCell.m in Sources */,
|
||||
E8AC722926F488DA007D6E91 /* XPMineFeedbackProtocol.h in Sources */,
|
||||
@@ -5188,6 +5264,7 @@
|
||||
9BB54966278303EB0090CD26 /* XPNobleCenterNavView.m in Sources */,
|
||||
9B92A36327980DCC00AD168F /* Api+SkillCard.m in Sources */,
|
||||
E88B5CB526FB20B800DA9178 /* XPMineTeenagerPwdView.m in Sources */,
|
||||
9BDA3E7A27FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m in Sources */,
|
||||
E81C279826EB3AC40031E639 /* LoginForgetPasswordProtocol.h in Sources */,
|
||||
E8C6FFD42754AA87004DC9F0 /* XPNoteView.m in Sources */,
|
||||
E84150BB27747BAF00A7F548 /* XPFirstRechargePresenter.m in Sources */,
|
||||
@@ -5387,6 +5464,7 @@
|
||||
186A534B26FC6ED900D67B2C /* TTPopupManagerService.m in Sources */,
|
||||
18E7B1B226E8AF980064BC9B /* MainPresenter.m in Sources */,
|
||||
E81366F626F0C0DF0076364C /* LoginFullInfoPresenter.m in Sources */,
|
||||
9BDA3E7727FD41C200517FE6 /* XPAnchorFansTeamViewController.m in Sources */,
|
||||
18A61BE8274F9CF000A09A54 /* SessionListViewController.m in Sources */,
|
||||
E8C1CD6A27D8937800376F83 /* XPRoomFaceCollectionViewCell.m in Sources */,
|
||||
E8DBB6F927B639A300AA285D /* LittleGameStageView.m in Sources */,
|
||||
@@ -5412,6 +5490,7 @@
|
||||
E8B846D626FDE01B00A777FE /* XPMineRechargePresenter.m in Sources */,
|
||||
E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */,
|
||||
18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */,
|
||||
9BDA3E7D27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m in Sources */,
|
||||
E8C6FFE62754FE53004DC9F0 /* XPHomeSearchPresenter.m in Sources */,
|
||||
9B2A12DE2783FEDD00CED41B /* UserVipInfoVo.m in Sources */,
|
||||
E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */,
|
||||
@@ -5437,6 +5516,7 @@
|
||||
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */,
|
||||
E8C6FFE02754EEF9004DC9F0 /* XPHomeSearchViewController.m in Sources */,
|
||||
E8AE427327153A3500BEEBB2 /* XPRoomActivityContainerView.m in Sources */,
|
||||
9BB89DC627FEB9E100586A83 /* XPAnchorFansTaskViewController.m in Sources */,
|
||||
E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */,
|
||||
E8ACEFE927C8BC1600F66D1A /* XPHomeRecommendHeaderView.m in Sources */,
|
||||
18486217271EAB8C005FC5DC /* BaseRtcImpl.m in Sources */,
|
||||
|
6
xplan-ios/Assets.xcassets/Room/Anchor/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
22
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_help.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_help@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_help@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@2x.png
vendored
Normal file
After Width: | Height: | Size: 681 B |
BIN
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@3x.png
vendored
Normal file
After Width: | Height: | Size: 985 B |
22
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_join.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_join@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_join@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_join.imageset/anchor_fansTeam_join@2x.png
vendored
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_join.imageset/anchor_fansTeam_join@3x.png
vendored
Normal file
After Width: | Height: | Size: 9.6 KiB |
22
xplan-ios/Assets.xcassets/Room/Anchor/anchor_fansTeam_nameplate.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_nameplate@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "anchor_fansTeam_nameplate@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 5.3 KiB |
22
xplan-ios/Assets.xcassets/Room/Anchor/join_anchor_fansTeam_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "join_anchor_fansTeam_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "join_anchor_fansTeam_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 186 KiB |
@@ -54,6 +54,14 @@ typedef NS_ENUM(NSUInteger, URLType) {
|
||||
kCommunitySpecURL,
|
||||
///账号注销协议
|
||||
kAccountlogoutAgrURL,
|
||||
///主播粉丝团-铭牌申请
|
||||
kAnchorFansOpenURL,
|
||||
///主播粉丝团-粉丝列表
|
||||
kAnchorFansListURL,
|
||||
///主播粉丝团-粉丝排行
|
||||
kAnchorFansRankURL,
|
||||
///主播粉丝团-粉丝团规则
|
||||
kAnchorFansRuleURL,
|
||||
};
|
||||
|
||||
NSString * const URLWithType(URLType type);
|
||||
|
@@ -39,6 +39,10 @@ NSString * const URLWithType(URLType type) {
|
||||
@(kLiveServiceAgrURL) : @"modules/rule/live-protocol.html", ///直播服务协议
|
||||
@(kCommunitySpecURL) : @"modules/rule/community-norms.html", ///社区规范
|
||||
@(kAccountlogoutAgrURL) : @"modules/rule/logout-agreement.html", ///账号注销协议
|
||||
@(kAnchorFansOpenURL) : @"modules/fans_club/nameplate.html", ///主播粉丝团-铭牌申请
|
||||
@(kAnchorFansListURL) : @"modules/fans_club/myfans.html", ///主播粉丝团-粉丝列表
|
||||
@(kAnchorFansRankURL) : @"modules/fans_club/fans_rank.html", ///主播粉丝团-粉丝排行
|
||||
@(kAnchorFansRuleURL) : @"modules/fans_club/rule.html" ///主播粉丝团-粉丝团规则
|
||||
};
|
||||
NSString * url = [dic objectForKey:@(type)];
|
||||
|
||||
|
@@ -141,9 +141,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// 进房初始化当前用户与房间粉丝团关系
|
||||
/// @param completion 完成
|
||||
/// @param uid 用户uid
|
||||
/// @param roomUid 房间uid
|
||||
+ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid;
|
||||
/// @param teamUid 房间uid
|
||||
+ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -155,10 +155,9 @@
|
||||
|
||||
/// 进房初始化当前用户与房间粉丝团关系
|
||||
/// @param completion 完成
|
||||
/// @param uid 用户uid
|
||||
/// @param roomUid 房间uid
|
||||
+ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid {
|
||||
[self makeRequest:@"anchorFansTeam/initInRoomFansTeam" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, roomUid, nil];
|
||||
/// @param teamUid 房间uid
|
||||
+ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid {
|
||||
[self makeRequest:@"anchorFansTeam/initInRoomFansTeam" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -126,6 +126,10 @@ typedef NS_ENUM(NSInteger, RoomDatingStateChangeType) {
|
||||
@property (nonatomic, assign) int64_t mgId;
|
||||
///小游戏名称
|
||||
@property (nonatomic, copy) NSString *mgName;
|
||||
///是否开通了粉丝团(本地字段)
|
||||
@property (nonatomic, assign) BOOL hadOpenAnchorFans;
|
||||
///开通粉丝团红点(本地字段)
|
||||
@property (nonatomic, assign) BOOL anchorFansRedDot;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -48,7 +48,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
///进房初始化当前用户与房间粉丝团关系
|
||||
/// @param uid 用户uid
|
||||
- (void)getInRoomFansTeamWithUid:(NSString *)uid roomUid:(NSString *)roomUid ;
|
||||
//- (void)getInRoomFansTeamWithUid:(NSString *)uid roomUid:(NSString *)roomUid ;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -186,10 +186,10 @@
|
||||
|
||||
///进房初始化当前用户与房间粉丝团关系
|
||||
/// @param uid 用户uid
|
||||
- (void)getInRoomFansTeamWithUid:(NSString *)uid roomUid:(NSString *)roomUid {
|
||||
[Api requestInRoomFansTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSLog(@"%@", data);
|
||||
}] uid:uid roomUid:roomUid];
|
||||
}
|
||||
//- (void)getInRoomFansTeamWithUid:(NSString *)uid roomUid:(NSString *)roomUid {
|
||||
// [Api requestInRoomFansTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
// NSLog(@"%@", data);
|
||||
// }] uid:uid roomUid:roomUid];
|
||||
//}
|
||||
|
||||
@end
|
||||
|
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// XPAnchorFansRelationModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/7.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPAnchorFansRelationModel : NSObject
|
||||
|
||||
///当前房间是否开通粉丝团
|
||||
@property (nonatomic, assign) BOOL hasFansTeamCurrentRoom;
|
||||
///是否为粉丝团成员
|
||||
@property (nonatomic, assign) BOOL isAnchorFans;
|
||||
///是否为当前房间的主播
|
||||
@property (nonatomic, assign) BOOL isCurrentRoomAnchor;
|
||||
///菜单栏入口是否展示红点提示
|
||||
@property (nonatomic, assign) BOOL isRedPop;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// XPAnchorFansRelationModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/7.
|
||||
//
|
||||
|
||||
#import "XPAnchorFansRelationModel.h"
|
||||
|
||||
@implementation XPAnchorFansRelationModel
|
||||
|
||||
@end
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPAnchorFansTeamPresenter.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPAnchorFansTeamPresenter : BaseMvpPresenter
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// XPAnchorFansTeamPresenter.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import "XPAnchorFansTeamPresenter.h"
|
||||
|
||||
@implementation XPAnchorFansTeamPresenter
|
||||
|
||||
@end
|
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// XPAnchorFansTeamProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
@protocol XPAnchorFansTeamProtocol <NSObject>
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// XPAnchorFansTaskViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/7.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPAnchorFansTaskViewController : MvpViewController
|
||||
|
||||
- (instancetype)initWithRoomUid:(NSString *)roomUid;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// XPAnchorFansTaskViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/7.
|
||||
//
|
||||
|
||||
#import "XPAnchorFansTaskViewController.h"
|
||||
|
||||
@implementation XPAnchorFansTaskViewController
|
||||
|
||||
@end
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPAnchorFansTeamEntranceView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPAnchorFansTeamEntranceView : UIView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// XPAnchorFansTeamEntranceView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import "XPAnchorFansTeamEntranceView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import "UIImage+Utils.h"
|
||||
#import "ThemeColor.h"
|
||||
|
||||
@interface XPAnchorFansTeamEntranceView()
|
||||
|
||||
///背景图
|
||||
@property (nonatomic, strong) UIImageView *bgImageView;
|
||||
///心形图标
|
||||
@property (nonatomic, strong) UIImageView *iconImageView;
|
||||
///礼物值
|
||||
@property (nonatomic, strong) UILabel *valueLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPAnchorFansTeamEntranceView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.bgImageView];
|
||||
[self.bgImageView addSubview:self.iconImageView];
|
||||
[self.bgImageView addSubview:self.valueLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.bgImageView);
|
||||
}];
|
||||
|
||||
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.bottom.mas_equalTo(self);
|
||||
make.left.mas_equalTo(self.valueLabel.mas_left).mas_offset(-8);
|
||||
make.right.mas_equalTo(self.iconImageView.mas_right).mas_offset(8);
|
||||
}];
|
||||
[self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(self.bgImageView);
|
||||
make.width.height.mas_equalTo(13);
|
||||
}];
|
||||
[self.valueLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(self.bgImageView);
|
||||
make.right.mas_equalTo(self.iconImageView.mas_left).mas_offset(-2);
|
||||
}];
|
||||
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setGiftValue:(long long)giftValue {
|
||||
NSString *value;
|
||||
if (giftValue < 1000000) {
|
||||
value = @(giftValue).stringValue;
|
||||
} else if (giftValue >= 100000000) {
|
||||
value = @"9999万+";
|
||||
} else {
|
||||
value = [NSString stringWithFormat:@"%lld万", giftValue/10000];
|
||||
}
|
||||
self.valueLabel.text = value;
|
||||
}
|
||||
|
||||
- (UIImageView *)bgImageView {
|
||||
if (_bgImageView == nil) {
|
||||
_bgImageView = [[UIImageView alloc] init];
|
||||
_bgImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF2D7C), UIColorFromRGB(0xFF8BB2)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(20, 50)];
|
||||
_bgImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _bgImageView;
|
||||
}
|
||||
|
||||
- (UIImageView *)iconImageView {
|
||||
if (_iconImageView == nil) {
|
||||
_iconImageView = [[UIImageView alloc] init];
|
||||
_iconImageView.userInteractionEnabled = YES;
|
||||
_iconImageView.image = [UIImage imageNamed:@"room_position_giftValue_heart"];
|
||||
_iconImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _iconImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)valueLabel {
|
||||
if (_valueLabel == nil) {
|
||||
_valueLabel = [[UILabel alloc] init];
|
||||
_valueLabel.textColor = UIColor.whiteColor;
|
||||
_valueLabel.font = [UIFont systemFontOfSize:14];
|
||||
_valueLabel.text = @"0";
|
||||
}
|
||||
return _valueLabel;
|
||||
}
|
||||
|
||||
|
||||
@end
|
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// XPAnchorFansTeamViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPAnchorFansTeamViewController : MvpViewController
|
||||
|
||||
- (instancetype)initWithRoomUid:(NSString *)roomUid;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,433 @@
|
||||
//
|
||||
// XPAnchorFansTeamViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/6.
|
||||
//
|
||||
|
||||
#import "XPAnchorFansTeamViewController.h"
|
||||
///P
|
||||
#import "XPAnchorFansTeamPresenter.h"
|
||||
#import "XPAnchorFansTeamProtocol.h"
|
||||
///Third
|
||||
#import "NetImageView.h"
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "XPMacro.h"
|
||||
#import "UIImage+Utils.h"
|
||||
#import "ThemeColor.h"
|
||||
|
||||
@interface XPAnchorFansTeamViewController()<XPAnchorFansTeamProtocol>
|
||||
|
||||
///房间Uid
|
||||
@property (nonatomic, strong) NSString *roomUid;
|
||||
///顶部点击消失的view
|
||||
@property (nonatomic, strong) UIView *topView;
|
||||
///显示内容的view
|
||||
@property (nonatomic, strong) UIView *contentView;
|
||||
///背景图片
|
||||
@property (nonatomic, strong) UIImageView *bgImageView;
|
||||
///帮助按钮
|
||||
@property (nonatomic, strong) UIButton *helpButton;
|
||||
///头像
|
||||
@property (nonatomic, strong) NetImageView *avatarImageView;
|
||||
///粉丝团名称
|
||||
@property (nonatomic, strong) UILabel *nameLabel;
|
||||
///粉丝团人数
|
||||
@property (nonatomic, strong) UILabel *countLabel;
|
||||
|
||||
@property (nonatomic, strong) UIStackView *stackView;
|
||||
///粉丝专属特权
|
||||
@property (nonatomic, strong) UIImageView *privilegeTitleImageView;
|
||||
///专属铭牌背景
|
||||
@property (nonatomic, strong) UIView *nameplateBgView;
|
||||
///专属铭牌图片
|
||||
@property (nonatomic, strong) NetImageView *nameplateImageView;
|
||||
///专属铭牌名称
|
||||
@property (nonatomic, strong) UILabel *nameplateLabel;
|
||||
///专属铭牌描述
|
||||
@property (nonatomic, strong) UILabel *nameplateDescLabel;
|
||||
///专属礼物背景
|
||||
@property (nonatomic, strong) UIView *giftBgView;
|
||||
///专属礼物图片
|
||||
@property (nonatomic, strong) NetImageView *giftImageView;
|
||||
///专属礼物名称
|
||||
@property (nonatomic, strong) UILabel *giftLabel;
|
||||
///专属礼物描述
|
||||
@property (nonatomic, strong) UILabel *giftDescLabel;
|
||||
///加入按钮的icon
|
||||
@property (nonatomic, strong) UIImageView *iconImageView;
|
||||
///加入按钮
|
||||
@property (nonatomic, strong) UIButton *joinButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPAnchorFansTeamViewController
|
||||
|
||||
- (instancetype)initWithRoomUid:(NSString *)roomUid {
|
||||
if (self = [super init]) {
|
||||
self.roomUid = roomUid;
|
||||
self.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (XPAnchorFansTeamPresenter *)createPresenter {
|
||||
return [[XPAnchorFansTeamPresenter alloc] init];;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
|
||||
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
||||
[self.view endEditing:YES];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.view.backgroundColor = [UIColor clearColor];
|
||||
[self.view addSubview:self.topView];
|
||||
[self.view addSubview:self.contentView];
|
||||
|
||||
[self.contentView addSubview:self.bgImageView];
|
||||
[self.contentView addSubview:self.helpButton];
|
||||
[self.contentView addSubview:self.avatarImageView];
|
||||
[self.contentView addSubview:self.nameLabel];
|
||||
[self.contentView addSubview:self.countLabel];
|
||||
[self.contentView addSubview:self.stackView];
|
||||
[self.contentView addSubview:self.privilegeTitleImageView];
|
||||
[self.contentView addSubview:self.nameplateBgView];
|
||||
|
||||
[self.nameplateBgView addSubview:self.nameplateImageView];
|
||||
[self.nameplateBgView addSubview:self.nameplateLabel];
|
||||
[self.nameplateBgView addSubview:self.nameplateDescLabel];
|
||||
|
||||
[self.contentView addSubview:self.giftBgView];
|
||||
[self.giftBgView addSubview:self.giftImageView];
|
||||
[self.giftBgView addSubview:self.giftLabel];
|
||||
[self.giftBgView addSubview:self.giftDescLabel];
|
||||
|
||||
[self.contentView addSubview:self.joinButton];
|
||||
[self.contentView addSubview:self.iconImageView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.topView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.top.mas_equalTo(self.view);
|
||||
make.bottom.mas_equalTo(self.contentView.mas_top);
|
||||
}];
|
||||
|
||||
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.bottom.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(416);
|
||||
}];
|
||||
|
||||
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make){
|
||||
make.edges.mas_equalTo(0);
|
||||
}];
|
||||
|
||||
[self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-15);
|
||||
make.top.mas_equalTo(15);
|
||||
make.width.height.mas_equalTo(20);
|
||||
}];
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(15);
|
||||
make.width.height.mas_equalTo(64);
|
||||
make.top.mas_equalTo(36);
|
||||
}];
|
||||
|
||||
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(21);
|
||||
make.left.mas_equalTo(self.avatarImageView).mas_offset(8);
|
||||
make.top.mas_equalTo(self.avatarImageView).offset(6);
|
||||
make.right.mas_equalTo(self.countLabel.mas_left).mas_offset(-4);
|
||||
}];
|
||||
|
||||
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(self.nameLabel);
|
||||
make.right.mas_equalTo(-26);
|
||||
make.height.mas_equalTo(15);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8);
|
||||
make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-3);
|
||||
}];
|
||||
|
||||
[self.privilegeTitleImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(15);
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.width.mas_equalTo(103);
|
||||
make.height.mas_equalTo(38);
|
||||
}];
|
||||
|
||||
[self.nameplateBgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView).inset(15);
|
||||
make.top.mas_equalTo(self.privilegeTitleImageView.mas_bottom).offset(7);
|
||||
make.height.mas_equalTo(58);
|
||||
}];
|
||||
|
||||
[self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(10);
|
||||
make.centerY.mas_equalTo(self.nameplateBgView);
|
||||
make.width.height.mas_equalTo(38);
|
||||
}];
|
||||
|
||||
[self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.nameplateImageView.mas_right).mas_offset(8);
|
||||
make.top.mas_equalTo(self.nameplateImageView).mas_offset(1);
|
||||
make.height.mas_equalTo(21);
|
||||
}];
|
||||
[self.nameplateDescLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.nameplateLabel.mas_bottom);
|
||||
make.left.mas_equalTo(self.nameplateLabel);
|
||||
make.height.mas_equalTo(15);
|
||||
}];
|
||||
|
||||
[self.giftBgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView).inset(15);
|
||||
make.top.mas_equalTo(self.nameplateBgView.mas_bottom).offset(12);
|
||||
make.height.mas_equalTo(58);
|
||||
}];
|
||||
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(10);
|
||||
make.centerY.mas_equalTo(self.giftBgView);
|
||||
make.width.height.mas_equalTo(38);
|
||||
}];
|
||||
|
||||
[self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.giftImageView.mas_right).mas_offset(8);
|
||||
make.top.mas_equalTo(self.giftImageView).mas_offset(1);
|
||||
make.height.mas_equalTo(21);
|
||||
}];
|
||||
[self.giftDescLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.giftLabel.mas_bottom);
|
||||
make.left.mas_equalTo(self.giftLabel);
|
||||
make.height.mas_equalTo(15);
|
||||
}];
|
||||
|
||||
[self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.joinButton);
|
||||
make.left.mas_equalTo(self.joinButton).mas_offset(15);
|
||||
make.width.height.mas_equalTo(75);
|
||||
}];
|
||||
[self.joinButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView).inset(15);
|
||||
make.height.mas_equalTo(48);
|
||||
make.bottom.mas_equalTo(-kSafeAreaBottomHeight - 14);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - private
|
||||
- (void)onDismiss:(UITapGestureRecognizer *)ges {
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
#pragma mark - getter
|
||||
- (UIView *)topView {
|
||||
if (!_topView) {
|
||||
_topView = [[UIView alloc] init];
|
||||
_topView.backgroundColor = UIColor.blackColor;
|
||||
_topView.alpha = 0.3;
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDismiss:)];
|
||||
[_topView addGestureRecognizer:tap];
|
||||
}
|
||||
return _topView;
|
||||
}
|
||||
|
||||
- (UIView *)contentView {
|
||||
if (!_contentView) {
|
||||
_contentView = [[UIView alloc] init];
|
||||
CAShapeLayer * layer = [CAShapeLayer layer];
|
||||
layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,416) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath;
|
||||
_contentView.layer.mask = layer;
|
||||
}
|
||||
return _contentView;
|
||||
}
|
||||
|
||||
- (UIImageView *)bgImageView {
|
||||
if (!_bgImageView) {
|
||||
_bgImageView = [[UIImageView alloc] init];
|
||||
_bgImageView.image = [UIImage imageNamed:@"join_anchor_fansTeam_bg"];
|
||||
_bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _bgImageView;
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 64 / 2;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [UIColor whiteColor];
|
||||
label.textAlignment = NSTextAlignmentRight;
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
|
||||
_nameLabel = label;
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)countLabel {
|
||||
if (!_countLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [UIColor whiteColor];
|
||||
label.textAlignment = NSTextAlignmentRight;
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
|
||||
_countLabel = label;
|
||||
}
|
||||
return _countLabel;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 16;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UIImageView *)privilegeTitleImageView {
|
||||
if (!_privilegeTitleImageView) {
|
||||
_privilegeTitleImageView = [[UIImageView alloc] init];
|
||||
_privilegeTitleImageView.image = [UIImage imageNamed:@"anchor_fansTeam_nameplate"];
|
||||
_privilegeTitleImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _privilegeTitleImageView;
|
||||
}
|
||||
|
||||
- (UIView *)nameplateBgView {
|
||||
if (!_nameplateBgView) {
|
||||
_nameplateBgView = [[UIView alloc] init];
|
||||
_nameplateBgView.backgroundColor = [UIColor whiteColor];
|
||||
_nameplateBgView.layer.cornerRadius = 8;
|
||||
_nameplateBgView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _nameplateBgView;
|
||||
}
|
||||
|
||||
- (NetImageView *)nameplateImageView {
|
||||
if (!_nameplateImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_nameplateImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_nameplateImageView.layer.masksToBounds = YES;
|
||||
_nameplateImageView.layer.cornerRadius = 8;
|
||||
}
|
||||
return _nameplateImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameplateLabel; {
|
||||
if (!_nameplateLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [ThemeColor mainTextColor];
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold];
|
||||
_nameplateLabel = label;
|
||||
}
|
||||
return _nameplateLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)nameplateDescLabel; {
|
||||
if (!_nameplateDescLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [ThemeColor textThirdColor];
|
||||
label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
|
||||
_nameplateDescLabel = label;
|
||||
}
|
||||
return _nameplateDescLabel;
|
||||
}
|
||||
|
||||
- (UIView *)giftBgView {
|
||||
if (!_giftBgView) {
|
||||
_giftBgView = [[UIView alloc] init];
|
||||
_giftBgView.backgroundColor = [UIColor whiteColor];
|
||||
_giftBgView.layer.cornerRadius = 8;
|
||||
_giftBgView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _giftBgView;
|
||||
}
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_giftImageView.layer.masksToBounds = YES;
|
||||
_giftImageView.layer.cornerRadius = 8;
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)giftLabel; {
|
||||
if (!_giftLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [ThemeColor mainTextColor];
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold];
|
||||
_giftLabel = label;
|
||||
}
|
||||
return _giftLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)giftDescLabel; {
|
||||
if (!_giftDescLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textColor = [ThemeColor textThirdColor];
|
||||
label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
|
||||
_giftDescLabel = label;
|
||||
}
|
||||
return _giftDescLabel;
|
||||
}
|
||||
|
||||
- (UIImageView *)iconImageView {
|
||||
if (!_iconImageView) {
|
||||
_iconImageView = [[UIImageView alloc] init];
|
||||
_iconImageView.image = [UIImage imageNamed:@"anchor_fansTeam_join"];
|
||||
}
|
||||
return _iconImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)joinButton {
|
||||
if (!_joinButton) {
|
||||
_joinButton = [[UIButton alloc] init];
|
||||
[_joinButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF49A3), UIColorFromRGB(0xFF2B4C)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
|
||||
[_joinButton setTitle:@"送入团礼物加入主播粉丝团(10钻)" forState:UIControlStateNormal];
|
||||
_joinButton.layer.masksToBounds = YES;
|
||||
_joinButton.layer.cornerRadius = 24;
|
||||
_joinButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
|
||||
[_joinButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
[_joinButton addTarget:self action:@selector(doneButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _joinButton;
|
||||
}
|
||||
|
||||
- (UIButton *)helpButton {
|
||||
if (!_helpButton) {
|
||||
_helpButton = [[UIButton alloc] init];
|
||||
[_helpButton addTarget:self action:@selector(helpButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_helpButton setBackgroundImage:[UIImage imageNamed:@"anchor_fansTeam_help"] forState:UIControlStateNormal];
|
||||
}
|
||||
return _helpButton;
|
||||
}
|
||||
|
||||
@end
|
@@ -32,6 +32,7 @@
|
||||
#import "GiftValueInfoModel.h"
|
||||
#import "AcrossRoomPKPanelModel.h"
|
||||
#import "LittleGameInfoModel.h"
|
||||
#import "XPAnchorFansRelationModel.h"
|
||||
///View
|
||||
#import "XPRoomHalfWebView.h"
|
||||
#import "XPAnchorAudienceUpMicView.h"
|
||||
@@ -49,6 +50,11 @@
|
||||
#import "XPRoomViewController.h"
|
||||
#import "XPLittleGameMiniStageView.h"
|
||||
#import "XPLittleGameRoomListView.h"
|
||||
#import "XPAnchorFansTeamEntranceView.h"
|
||||
#import "XPAnchorFansTeamViewController.h"
|
||||
#import "XPAnchorFansTaskViewController.h"
|
||||
#import "XPWebViewController.h"
|
||||
|
||||
@interface XPRoomFunctionContainerView ()<XPAcrpssRoomPKPanelViewDelegate, XPRoomLittleGameListViewDelegate>
|
||||
///host 代理
|
||||
@property (nonatomic,weak) id<RoomHostDelegate>delegate;
|
||||
@@ -60,6 +66,8 @@
|
||||
@property (nonatomic, strong) dispatch_source_t followAnchorTimer;
|
||||
///个播房房主魅力值
|
||||
@property (nonatomic, strong) AnchorGiftValueView *anchorGiftValueView;
|
||||
///个播粉丝团入口
|
||||
@property (nonatomic, strong) XPAnchorFansTeamEntranceView *fansTeamEntranceView;
|
||||
///话题的容器
|
||||
@property (nonatomic,strong) UIStackView *topicStackView;
|
||||
///话题
|
||||
@@ -113,6 +121,7 @@
|
||||
[self addSubview:self.contributionButton];
|
||||
[self addSubview:self.anchorGiftValueView];
|
||||
[self addSubview:self.topicStackView];
|
||||
[self addSubview:self.fansTeamEntranceView];
|
||||
[self.topicStackView addArrangedSubview:self.topicLabel];
|
||||
[self.topicStackView addArrangedSubview:self.editButton];
|
||||
}
|
||||
@@ -129,7 +138,12 @@
|
||||
make.centerY.mas_equalTo(self.contributionButton);
|
||||
make.height.mas_equalTo(26);
|
||||
}];
|
||||
|
||||
[self.fansTeamEntranceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.contributionButton.mas_bottom).mas_offset(5);
|
||||
make.left.mas_equalTo(-12);
|
||||
make.height.mas_equalTo(26);
|
||||
make.width.mas_equalTo(90);
|
||||
}];
|
||||
[self.topicStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.height.mas_equalTo(15);
|
||||
@@ -256,6 +270,13 @@
|
||||
[self.contributionButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(statusbarHeight+49);
|
||||
}];
|
||||
if (roomInfo.hadChangeRoomType) {
|
||||
///进房初始化当前用户与房间粉丝团关系
|
||||
[Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data];
|
||||
[self updateFansTeamEntranceView:model];
|
||||
} teamUid:[NSString stringWithFormat:@"%ld", roomInfo.uid]];
|
||||
}
|
||||
} else {
|
||||
[self.contributionButton setTitle:@"房间榜" forState:UIControlStateNormal];
|
||||
self.anchorGiftValueView.hidden = YES;
|
||||
@@ -280,7 +301,12 @@
|
||||
[self setFollowAnchorTimer];
|
||||
}
|
||||
} uid:uid isLikeUid:roomUid];
|
||||
}
|
||||
}
|
||||
///进房初始化当前用户与房间粉丝团关系
|
||||
[Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data];
|
||||
[self updateFansTeamEntranceView:model];
|
||||
} teamUid:roomUid];
|
||||
}
|
||||
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) {
|
||||
@@ -600,6 +626,31 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)tapFansTeamRecognizer {
|
||||
if (self.fansTeamEntranceView.hidden) {
|
||||
return;
|
||||
}
|
||||
NSString *roomUid = [NSString stringWithFormat:@"%zd", self.delegate.getRoomInfo.uid];
|
||||
RoomInfoModel *roomInfo = self.delegate.getRoomInfo;
|
||||
|
||||
if ([[[AccountInfoStorage instance] getUid] isEqualToString:roomUid]) {///是房主
|
||||
if (roomInfo.hadOpenAnchorFans) {
|
||||
|
||||
} else {
|
||||
XPWebViewController * webVC =[[XPWebViewController alloc] init];
|
||||
webVC.url = URLWithType(kAnchorFansOpenURL);
|
||||
[self.delegate.getCurrentNav pushViewController:webVC animated:YES];
|
||||
}
|
||||
} else {
|
||||
// XPAnchorFansTeamViewController *fansTeamVc = [[XPAnchorFansTeamViewController alloc] initWithRoomUid:roomUid];
|
||||
// [self.delegate.getCurrentNav presentViewController:fansTeamVc animated:YES completion:nil];
|
||||
|
||||
XPAnchorFansTaskViewController *fansTaskVc = [[XPAnchorFansTaskViewController alloc] initWithRoomUid:roomUid];
|
||||
[self.delegate.getCurrentNav presentViewController:fansTaskVc animated:YES completion:nil];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - 房间话题
|
||||
- (void)updateRoomTopicViewConstraint {
|
||||
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
||||
@@ -742,6 +793,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - 个播粉丝团
|
||||
- (void)updateFansTeamEntranceView:(XPAnchorFansRelationModel *)model {
|
||||
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
||||
if ([[[AccountInfoStorage instance] getUid] integerValue] == roomInfo.uid) {
|
||||
roomInfo.hadOpenAnchorFans = model.hasFansTeamCurrentRoom;
|
||||
roomInfo.anchorFansRedDot = model.isRedPop;
|
||||
if (model.hasFansTeamCurrentRoom) {//已开通粉丝团
|
||||
self.fansTeamEntranceView.hidden = NO;
|
||||
} else {
|
||||
// self.fansTeamEntranceView.hidden = YES;
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomLittleGameListViewDelegate
|
||||
- (void)xPRoomLittleGameListView:(XPLittleGameRoomListView *)view didSelectItem:(LittleGameInfoModel *)itemInfo {
|
||||
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
||||
@@ -834,6 +901,16 @@
|
||||
return _anchorGiftValueView;
|
||||
}
|
||||
|
||||
- (XPAnchorFansTeamEntranceView *)fansTeamEntranceView {
|
||||
if (!_fansTeamEntranceView) {
|
||||
_fansTeamEntranceView = [[XPAnchorFansTeamEntranceView alloc]init];
|
||||
// _fansTeamEntranceView.hidden = YES;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapFansTeamRecognizer)];
|
||||
[_fansTeamEntranceView addGestureRecognizer:tap];
|
||||
}
|
||||
return _fansTeamEntranceView;
|
||||
}
|
||||
|
||||
- (UIStackView *)topicStackView {
|
||||
if (!_topicStackView) {
|
||||
_topicStackView = [[UIStackView alloc] init];
|
||||
|
@@ -51,6 +51,8 @@ typedef NS_ENUM(NSInteger, RoomMoreMenuType) {
|
||||
@property (nonatomic,strong) UIColor *titleColor;
|
||||
///类型
|
||||
@property (nonatomic,assign) RoomMoreMenuType type;
|
||||
///是否显示红点
|
||||
@property (nonatomic, assign) BOOL showRedDot;
|
||||
|
||||
+(XPRoomMoreItemModel *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(RoomMoreMenuType)type titleColor:(UIColor *)titleColor;
|
||||
|
||||
|
@@ -82,6 +82,7 @@
|
||||
anchorFansClub.imageName = @"room_more_menu_fansTeam";
|
||||
anchorFansClub.type = RoomMoreMenuType_Room_OpenFansClub;
|
||||
anchorFansClub.titleColor = [ThemeColor roomMoreMenuTextColor];
|
||||
anchorFansClub.showRedDot = roomInfo.anchorFansRedDot;
|
||||
|
||||
NSString * uid = [AccountInfoStorage instance].getUid;
|
||||
NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
|
||||
@@ -112,7 +113,7 @@
|
||||
}
|
||||
}
|
||||
[array addObject:trumpet];
|
||||
if (isCreator && roomInfo.type == RoomType_Anchor) {
|
||||
if (isCreator && roomInfo.type == RoomType_Anchor && !roomInfo.hadOpenAnchorFans) {
|
||||
[array addObject:anchorFansClub];
|
||||
}
|
||||
}
|
||||
|
@@ -63,6 +63,7 @@
|
||||
self.logoImageView.image = [UIImage imageNamed:_itemModel.imageName];
|
||||
self.titleLabel.text = _itemModel.title;
|
||||
self.titleLabel.textColor = _itemModel.titleColor ? _itemModel.titleColor : [ThemeColor mainTextColor];
|
||||
self.redDotView.hidden = !itemModel.showRedDot;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -291,8 +291,6 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey;
|
||||
case RoomMoreMenuType_Room_OpenFansClub:
|
||||
{
|
||||
[self dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
// self.currentNav pushViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#>
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -479,9 +479,6 @@ UIKIT_EXTERN NSString * const kRoomMiniNotificationKey;
|
||||
if (self.roomInfo != nil) {
|
||||
[self.presenter reportUserInterRoom:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]];
|
||||
}
|
||||
if (self.roomInfo.type == RoomType_Anchor) {
|
||||
[self.presenter getInRoomFansTeamWithUid:[NSString stringWithFormat:@"%ld", self.userInfo.uid] roomUid:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)enterRoomFail:(NSInteger)code {
|
||||
|