房间内的部分UI

This commit is contained in:
fengshuo
2021-10-14 21:10:04 +08:00
parent 54fee4527a
commit 64be85e084
94 changed files with 2026 additions and 2 deletions

View File

@@ -31,6 +31,9 @@ target 'xplan-ios' do
pod 'Base64'
#统计
pod 'BaiduMobStatCodeless', '~> 5.3.5'
#文字自动滚动
pod 'MarqueeLabel-ObjC'
#登录的
pod 'mob_sharesdk'
pod 'mob_sharesdk/ShareSDKPlatforms/QQ'

View File

@@ -19,6 +19,7 @@ PODS:
- FFPopup (1.1.5)
- HappyDNS (0.3.17)
- IAPHelper (1.1)
- MarqueeLabel-ObjC (3.3.0)
- Masonry (1.1.0)
- MBProgressHUD (1.2.0)
- MJExtension (3.3.0)
@@ -56,6 +57,7 @@ DEPENDENCIES:
- Base64
- FFPopup
- IAPHelper
- MarqueeLabel-ObjC
- Masonry
- MBProgressHUD
- MJExtension
@@ -80,6 +82,7 @@ SPEC REPOS:
- FFPopup
- HappyDNS
- IAPHelper
- MarqueeLabel-ObjC
- Masonry
- MBProgressHUD
- MJExtension
@@ -101,6 +104,7 @@ SPEC CHECKSUMS:
FFPopup: a208dcee8db3e54ec4a88fcd6481f6f5d85b7a83
HappyDNS: 848ef73e24f2b0e2752064223ce2dc0dd88900ea
IAPHelper: fd74f53b0ac142eed085777b88b86a11746a2dd4
MarqueeLabel-ObjC: 696eaa82e4fcc7fb53e4fdf37ac138f03bf022d6
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
@@ -115,6 +119,6 @@ SPEC CHECKSUMS:
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
PODFILE CHECKSUM: 48063c5a85dfa0437fffd3a123ff709292daa45e
PODFILE CHECKSUM: 111c1baf4d2041d86b97a47854c455685b233ed1
COCOAPODS: 1.10.1

View File

@@ -83,6 +83,7 @@
18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B33126F317A20064BC9B /* XPWebViewController.m */; };
73FFADDC93E195344047A2EC /* Pods_xplan_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_xplan_ios.framework */; };
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0E1C5826E77022005D4442 /* BaseNavigationController.m */; };
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E80487642717DDD9008595F2 /* XPRoomMenuItem.m */; };
E81366E326F0A1FC0076364C /* LoginBindPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366E226F0A1FC0076364C /* LoginBindPhoneViewController.m */; };
E81366E726F0A49E0076364C /* NSString+Regex.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366E626F0A49E0076364C /* NSString+Regex.m */; };
E81366F326F0B7C80076364C /* LoginFullInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366F226F0B7C80076364C /* LoginFullInfoViewController.m */; };
@@ -163,6 +164,20 @@
E8AC723726F49982007D6E91 /* XPMineNotificaProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723626F49957007D6E91 /* XPMineNotificaProtocol.h */; };
E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723926F49AAE007D6E91 /* XPMineNotifyStatus.m */; };
E8AC723D26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723C26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m */; };
E8AE42642715392E00BEEBB2 /* XPRoomInfoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE42632715392E00BEEBB2 /* XPRoomInfoManager.m */; };
E8AE426A2715395F00BEEBB2 /* XPRoomMessageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE42692715395F00BEEBB2 /* XPRoomMessageManager.m */; };
E8AE426D2715397100BEEBB2 /* XPRoomMenuManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE426C2715397100BEEBB2 /* XPRoomMenuManager.m */; };
E8AE42702715398400BEEBB2 /* XPRoomActivityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE426F2715398400BEEBB2 /* XPRoomActivityManager.m */; };
E8AE427327153A3500BEEBB2 /* XPRoomActivityView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE427227153A3500BEEBB2 /* XPRoomActivityView.m */; };
E8AE427627153B7E00BEEBB2 /* XPRoomPositionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE427527153B7E00BEEBB2 /* XPRoomPositionManager.m */; };
E8AEAED6271412EC0017FCE0 /* XPRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */; };
E8AEAEE1271418AA0017FCE0 /* XPRoomBackUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEE0271418AA0017FCE0 /* XPRoomBackUIManager.m */; };
E8AEAEE4271418DA0017FCE0 /* XPRoomBaseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEE3271418DA0017FCE0 /* XPRoomBaseManager.m */; };
E8AEAEED27141AE20017FCE0 /* XPRoomBackUIView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEC27141AE20017FCE0 /* XPRoomBackUIView.m */; };
E8AEAEF027141C430017FCE0 /* XPRoomBottomMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEF27141C430017FCE0 /* XPRoomBottomMenuView.m */; };
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF227141C7C0017FCE0 /* XPRoomMessageView.m */; };
E8AEAEF627141C910017FCE0 /* XPRoomPositionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF527141C910017FCE0 /* XPRoomPositionView.m */; };
E8AEAEF927141CA30017FCE0 /* XPRoomInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF827141CA30017FCE0 /* XPRoomInfoView.m */; };
E8B825B726E9A7D8009E8E9F /* BaseObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825B626E9A7D8009E8E9F /* BaseObject.m */; };
E8B825BF26E9E57D009E8E9F /* LoginTicketInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825BE26E9E57D009E8E9F /* LoginTicketInfo.m */; };
E8B825C226EA00DF009E8E9F /* LoginVerifCodePresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C126EA00DF009E8E9F /* LoginVerifCodePresent.m */; };
@@ -357,6 +372,8 @@
9B0E1C5826E77022005D4442 /* BaseNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseNavigationController.m; sourceTree = "<group>"; };
B66633E061B1B34177CD011C /* Pods-xplan-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-xplan-ios.release.xcconfig"; path = "Target Support Files/Pods-xplan-ios/Pods-xplan-ios.release.xcconfig"; sourceTree = "<group>"; };
CACF623970097D653132D69A /* Pods_xplan_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_xplan_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E80487632717DDD9008595F2 /* XPRoomMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuItem.h; sourceTree = "<group>"; };
E80487642717DDD9008595F2 /* XPRoomMenuItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuItem.m; sourceTree = "<group>"; };
E81366E126F0A1FC0076364C /* LoginBindPhoneViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginBindPhoneViewController.h; sourceTree = "<group>"; };
E81366E226F0A1FC0076364C /* LoginBindPhoneViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginBindPhoneViewController.m; sourceTree = "<group>"; };
E81366E526F0A49E0076364C /* NSString+Regex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+Regex.h"; sourceTree = "<group>"; };
@@ -505,6 +522,34 @@
E8AC723926F49AAE007D6E91 /* XPMineNotifyStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotifyStatus.m; sourceTree = "<group>"; };
E8AC723B26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginBindPhoneResultViewController.h; sourceTree = "<group>"; };
E8AC723C26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginBindPhoneResultViewController.m; sourceTree = "<group>"; };
E8AE42622715392E00BEEBB2 /* XPRoomInfoManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInfoManager.h; sourceTree = "<group>"; };
E8AE42632715392E00BEEBB2 /* XPRoomInfoManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInfoManager.m; sourceTree = "<group>"; };
E8AE42682715395F00BEEBB2 /* XPRoomMessageManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageManager.h; sourceTree = "<group>"; };
E8AE42692715395F00BEEBB2 /* XPRoomMessageManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageManager.m; sourceTree = "<group>"; };
E8AE426B2715397100BEEBB2 /* XPRoomMenuManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuManager.h; sourceTree = "<group>"; };
E8AE426C2715397100BEEBB2 /* XPRoomMenuManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuManager.m; sourceTree = "<group>"; };
E8AE426E2715398400BEEBB2 /* XPRoomActivityManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomActivityManager.h; sourceTree = "<group>"; };
E8AE426F2715398400BEEBB2 /* XPRoomActivityManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomActivityManager.m; sourceTree = "<group>"; };
E8AE427127153A3500BEEBB2 /* XPRoomActivityView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomActivityView.h; sourceTree = "<group>"; };
E8AE427227153A3500BEEBB2 /* XPRoomActivityView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomActivityView.m; sourceTree = "<group>"; };
E8AE427427153B7E00BEEBB2 /* XPRoomPositionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionManager.h; sourceTree = "<group>"; };
E8AE427527153B7E00BEEBB2 /* XPRoomPositionManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionManager.m; sourceTree = "<group>"; };
E8AEAED4271412EC0017FCE0 /* XPRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomViewController.h; sourceTree = "<group>"; };
E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomViewController.m; sourceTree = "<group>"; };
E8AEAEDF271418AA0017FCE0 /* XPRoomBackUIManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBackUIManager.h; sourceTree = "<group>"; };
E8AEAEE0271418AA0017FCE0 /* XPRoomBackUIManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBackUIManager.m; sourceTree = "<group>"; };
E8AEAEE2271418DA0017FCE0 /* XPRoomBaseManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBaseManager.h; sourceTree = "<group>"; };
E8AEAEE3271418DA0017FCE0 /* XPRoomBaseManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBaseManager.m; sourceTree = "<group>"; };
E8AEAEEB27141AE20017FCE0 /* XPRoomBackUIView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBackUIView.h; sourceTree = "<group>"; };
E8AEAEEC27141AE20017FCE0 /* XPRoomBackUIView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBackUIView.m; sourceTree = "<group>"; };
E8AEAEEE27141C430017FCE0 /* XPRoomBottomMenuView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBottomMenuView.h; sourceTree = "<group>"; };
E8AEAEEF27141C430017FCE0 /* XPRoomBottomMenuView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBottomMenuView.m; sourceTree = "<group>"; };
E8AEAEF127141C7C0017FCE0 /* XPRoomMessageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageView.h; sourceTree = "<group>"; };
E8AEAEF227141C7C0017FCE0 /* XPRoomMessageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageView.m; sourceTree = "<group>"; };
E8AEAEF427141C910017FCE0 /* XPRoomPositionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionView.h; sourceTree = "<group>"; };
E8AEAEF527141C910017FCE0 /* XPRoomPositionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionView.m; sourceTree = "<group>"; };
E8AEAEF727141CA30017FCE0 /* XPRoomInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInfoView.h; sourceTree = "<group>"; };
E8AEAEF827141CA30017FCE0 /* XPRoomInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInfoView.m; sourceTree = "<group>"; };
E8B825B526E9A7D8009E8E9F /* BaseObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseObject.h; sourceTree = "<group>"; };
E8B825B626E9A7D8009E8E9F /* BaseObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseObject.m; sourceTree = "<group>"; };
E8B825BD26E9E57D009E8E9F /* LoginTicketInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginTicketInfo.h; sourceTree = "<group>"; };
@@ -852,6 +897,7 @@
189DD56126DE45F800AB55B1 /* Main */ = {
isa = PBXGroup;
children = (
E8AEAED3271412D00017FCE0 /* Room */,
E8E70D6E26F2EB1200F03460 /* Mine */,
18E7B1B426E8B2960064BC9B /* Tabbar */,
18E7B1FD26E8CC510064BC9B /* Match */,
@@ -1110,6 +1156,36 @@
path = Pods;
sourceTree = "<group>";
};
E804875F2717DD70008595F2 /* Model */ = {
isa = PBXGroup;
children = (
E80487632717DDD9008595F2 /* XPRoomMenuItem.h */,
E80487642717DDD9008595F2 /* XPRoomMenuItem.m */,
);
path = Model;
sourceTree = "<group>";
};
E80487602717DD89008595F2 /* Api */ = {
isa = PBXGroup;
children = (
);
path = Api;
sourceTree = "<group>";
};
E80487612717DD92008595F2 /* Presenter */ = {
isa = PBXGroup;
children = (
);
path = Presenter;
sourceTree = "<group>";
};
E80487622717DDAE008595F2 /* Protocol */ = {
isa = PBXGroup;
children = (
);
path = Protocol;
sourceTree = "<group>";
};
E81366E426F0A4820076364C /* NSString */ = {
isa = PBXGroup;
children = (
@@ -1305,6 +1381,157 @@
path = UIImageView;
sourceTree = "<group>";
};
E8AEAED3271412D00017FCE0 /* Room */ = {
isa = PBXGroup;
children = (
E80487622717DDAE008595F2 /* Protocol */,
E80487612717DD92008595F2 /* Presenter */,
E80487602717DD89008595F2 /* Api */,
E804875F2717DD70008595F2 /* Model */,
E8AEAED8271413530017FCE0 /* View */,
E8AEAED7271413210017FCE0 /* UIManager */,
E8AEAED4271412EC0017FCE0 /* XPRoomViewController.h */,
E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */,
);
path = Room;
sourceTree = "<group>";
};
E8AEAED7271413210017FCE0 /* UIManager */ = {
isa = PBXGroup;
children = (
E8AEAEDE271414FB0017FCE0 /* ActivityManager */,
E8AEAEDD271414DB0017FCE0 /* MenuManager */,
E8AEAEDC271414CA0017FCE0 /* MessageManager */,
E8AEAEDB271414B60017FCE0 /* PositionManager */,
E8AEAEDA2714148C0017FCE0 /* RoomInfoManager */,
E8AEAED92714146B0017FCE0 /* BaseUIManager */,
);
path = UIManager;
sourceTree = "<group>";
};
E8AEAED8271413530017FCE0 /* View */ = {
isa = PBXGroup;
children = (
E8AEAEE527141ACC0017FCE0 /* ActivityView */,
E8AEAEE727141ACC0017FCE0 /* BaseUIView */,
E8AEAEE927141ACC0017FCE0 /* MenuView */,
E8AEAEE627141ACC0017FCE0 /* MessageView */,
E8AEAEEA27141ACC0017FCE0 /* PositionView */,
E8AEAEE827141ACC0017FCE0 /* RoomInfoView */,
);
path = View;
sourceTree = "<group>";
};
E8AEAED92714146B0017FCE0 /* BaseUIManager */ = {
isa = PBXGroup;
children = (
E8AEAEDF271418AA0017FCE0 /* XPRoomBackUIManager.h */,
E8AEAEE0271418AA0017FCE0 /* XPRoomBackUIManager.m */,
E8AEAEE2271418DA0017FCE0 /* XPRoomBaseManager.h */,
E8AEAEE3271418DA0017FCE0 /* XPRoomBaseManager.m */,
);
path = BaseUIManager;
sourceTree = "<group>";
};
E8AEAEDA2714148C0017FCE0 /* RoomInfoManager */ = {
isa = PBXGroup;
children = (
E8AE42622715392E00BEEBB2 /* XPRoomInfoManager.h */,
E8AE42632715392E00BEEBB2 /* XPRoomInfoManager.m */,
);
path = RoomInfoManager;
sourceTree = "<group>";
};
E8AEAEDB271414B60017FCE0 /* PositionManager */ = {
isa = PBXGroup;
children = (
E8AE427427153B7E00BEEBB2 /* XPRoomPositionManager.h */,
E8AE427527153B7E00BEEBB2 /* XPRoomPositionManager.m */,
);
path = PositionManager;
sourceTree = "<group>";
};
E8AEAEDC271414CA0017FCE0 /* MessageManager */ = {
isa = PBXGroup;
children = (
E8AE42682715395F00BEEBB2 /* XPRoomMessageManager.h */,
E8AE42692715395F00BEEBB2 /* XPRoomMessageManager.m */,
);
path = MessageManager;
sourceTree = "<group>";
};
E8AEAEDD271414DB0017FCE0 /* MenuManager */ = {
isa = PBXGroup;
children = (
E8AE426B2715397100BEEBB2 /* XPRoomMenuManager.h */,
E8AE426C2715397100BEEBB2 /* XPRoomMenuManager.m */,
);
path = MenuManager;
sourceTree = "<group>";
};
E8AEAEDE271414FB0017FCE0 /* ActivityManager */ = {
isa = PBXGroup;
children = (
E8AE426E2715398400BEEBB2 /* XPRoomActivityManager.h */,
E8AE426F2715398400BEEBB2 /* XPRoomActivityManager.m */,
);
path = ActivityManager;
sourceTree = "<group>";
};
E8AEAEE527141ACC0017FCE0 /* ActivityView */ = {
isa = PBXGroup;
children = (
E8AE427127153A3500BEEBB2 /* XPRoomActivityView.h */,
E8AE427227153A3500BEEBB2 /* XPRoomActivityView.m */,
);
path = ActivityView;
sourceTree = "<group>";
};
E8AEAEE627141ACC0017FCE0 /* MessageView */ = {
isa = PBXGroup;
children = (
E8AEAEF127141C7C0017FCE0 /* XPRoomMessageView.h */,
E8AEAEF227141C7C0017FCE0 /* XPRoomMessageView.m */,
);
path = MessageView;
sourceTree = "<group>";
};
E8AEAEE727141ACC0017FCE0 /* BaseUIView */ = {
isa = PBXGroup;
children = (
E8AEAEEB27141AE20017FCE0 /* XPRoomBackUIView.h */,
E8AEAEEC27141AE20017FCE0 /* XPRoomBackUIView.m */,
);
path = BaseUIView;
sourceTree = "<group>";
};
E8AEAEE827141ACC0017FCE0 /* RoomInfoView */ = {
isa = PBXGroup;
children = (
E8AEAEF727141CA30017FCE0 /* XPRoomInfoView.h */,
E8AEAEF827141CA30017FCE0 /* XPRoomInfoView.m */,
);
path = RoomInfoView;
sourceTree = "<group>";
};
E8AEAEE927141ACC0017FCE0 /* MenuView */ = {
isa = PBXGroup;
children = (
E8AEAEEE27141C430017FCE0 /* XPRoomBottomMenuView.h */,
E8AEAEEF27141C430017FCE0 /* XPRoomBottomMenuView.m */,
);
path = MenuView;
sourceTree = "<group>";
};
E8AEAEEA27141ACC0017FCE0 /* PositionView */ = {
isa = PBXGroup;
children = (
E8AEAEF427141C910017FCE0 /* XPRoomPositionView.h */,
E8AEAEF527141C910017FCE0 /* XPRoomPositionView.m */,
);
path = PositionView;
sourceTree = "<group>";
};
E8B825BC26E9E520009E8E9F /* Model */ = {
isa = PBXGroup;
children = (
@@ -1743,6 +1970,7 @@
E8AC721926F46E0B007D6E91 /* XPMineSettingItemModel.m in Sources */,
189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */,
189DD6FF26E20E5900AB55B1 /* HttpRequestHelper.m in Sources */,
E8AEAED6271412EC0017FCE0 /* XPRoomViewController.m in Sources */,
E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */,
189DD74A26E21D8400AB55B1 /* SSKeychain.m in Sources */,
E8B846CF26FDD96100A777FE /* XPMineRechageHeadView.m in Sources */,
@@ -1750,10 +1978,12 @@
E81C27AE26EF39AB0031E639 /* AppDelegate+ThirdConfig.m in Sources */,
E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */,
E8B825D026EA3825009E8E9F /* LoginPasswordViewController.m in Sources */,
E8AE42642715392E00BEEBB2 /* XPRoomInfoManager.m in Sources */,
E8EEB90C26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m in Sources */,
18E7B31826F097E00064BC9B /* UserInfoModel.m in Sources */,
E8AC721326F46ADD007D6E91 /* XPMineSettingViewController.m in Sources */,
18E7B32126F098650064BC9B /* UserInfoSkillVo.m in Sources */,
E8AE42702715398400BEEBB2 /* XPRoomActivityManager.m in Sources */,
E8AC722726F482A4007D6E91 /* XPMineFeedbackPresenter.m in Sources */,
186A534E26FC6ED900D67B2C /* TTPopupService.m in Sources */,
E8AC722426F47E5E007D6E91 /* XPMineFeedbackViewController.m in Sources */,
@@ -1791,9 +2021,12 @@
E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */,
18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */,
E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */,
E8AEAEE4271418DA0017FCE0 /* XPRoomBaseManager.m in Sources */,
E8B825CD26EA18C8009E8E9F /* ThemeColor.m in Sources */,
E8AC720D26F435F5007D6E91 /* UIImageView+LoadImage.m in Sources */,
E88B5CBD26FB3BDF00DA9178 /* XPTeenagerAlertView.m in Sources */,
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageView.m in Sources */,
E8AE427327153A3500BEEBB2 /* XPRoomActivityView.m in Sources */,
E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */,
E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */,
E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */,
@@ -1805,6 +2038,7 @@
E81C279326EB394D0031E639 /* LoginForgetPasswordViewController.m in Sources */,
E81C278D26EAFAF60031E639 /* DESEncrypt.m in Sources */,
E81366E726F0A49E0076364C /* NSString+Regex.m in Sources */,
E8AE426A2715395F00BEEBB2 /* XPRoomMessageManager.m in Sources */,
E8EEB90126FC31B6007C6EBA /* XPMineUserInfoPresenter.m in Sources */,
189DD56526DE465A00AB55B1 /* LoginViewController.m in Sources */,
E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */,
@@ -1812,10 +2046,13 @@
E88B5CAD26FB16A800DA9178 /* XPMineTeenagerDesView.m in Sources */,
E824545126F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m in Sources */,
E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */,
E8AEAEE1271418AA0017FCE0 /* XPRoomBackUIManager.m in Sources */,
E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */,
18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */,
E8AEAEF927141CA30017FCE0 /* XPRoomInfoView.m in Sources */,
E8AC721C26F4720B007D6E91 /* XPMineSettingPresent.m in Sources */,
E88B5CA526FB088600DA9178 /* XPMineTeenagerViewController.m in Sources */,
E8AEAEF027141C430017FCE0 /* XPRoomBottomMenuView.m in Sources */,
E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */,
18C17A5D26F338F300C48E11 /* XplanFBFlutterViewContainer.m in Sources */,
E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */,
@@ -1834,6 +2071,7 @@
E824546426F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m in Sources */,
E8B846BC26FD7C1200A777FE /* UploadImage.m in Sources */,
186A534D26FC6ED900D67B2C /* TTActionSheetView.m in Sources */,
E8AEAEED27141AE20017FCE0 /* XPRoomBackUIView.m in Sources */,
E88B5CC126FB407B00DA9178 /* XPMineUserInfoViewController.m in Sources */,
E824545926F5E65900BE8163 /* XPMineVerifIdentityView.m in Sources */,
189DD74026E21C3F00AB55B1 /* YYUtility+App.m in Sources */,
@@ -1845,8 +2083,10 @@
E88B5CC526FB42B000DA9178 /* XPMineUserInfoHeaderView.m in Sources */,
E8EEB8FB26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m in Sources */,
E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */,
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */,
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */,
E8AEAEF627141C910017FCE0 /* XPRoomPositionView.m in Sources */,
E872308926E89BE000B90D4F /* LoginPhoneViewController.m in Sources */,
18E7B29026EA0E6B0064BC9B /* FlutterBoost+Xplan.m in Sources */,
E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */,
@@ -1854,7 +2094,9 @@
E88B5CB826FB325200DA9178 /* XPMineTeenagerPwdPresenter.m in Sources */,
E89DA66727006443008483C1 /* RechargeStorage.m in Sources */,
189DD53F26DE255600AB55B1 /* main.m in Sources */,
E8AE427627153B7E00BEEBB2 /* XPRoomPositionManager.m in Sources */,
E872308D26E89DAA00B90D4F /* LoginInputView.m in Sources */,
E8AE426D2715397100BEEBB2 /* XPRoomMenuManager.m in Sources */,
189DD58F26DF97E700AB55B1 /* LoginPresenter.m in Sources */,
E89DA67227008D59008483C1 /* WalletInfoModel.m in Sources */,
189DD55026DE37F900AB55B1 /* MvpViewController.m in Sources */,

View File

@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1250"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "189DD52826DE255300AB55B1"
BuildableName = "xplan-ios.app"
BlueprintName = "xplan-ios"
ReferencedContainer = "container:xplan-ios.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "189DD52826DE255300AB55B1"
BuildableName = "xplan-ios.app"
BlueprintName = "xplan-ios"
ReferencedContainer = "container:xplan-ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "189DD52826DE255300AB55B1"
BuildableName = "xplan-ios.app"
BlueprintName = "xplan-ios"
ReferencedContainer = "container:xplan-ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_activity_banner_normal@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_activity_banner_normal@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_activity_banner_select@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_activity_banner_select@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_face@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_face@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_gift@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_gift@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_input_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_input_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_message@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_message@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_mic_close@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_mic_close@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_mic_open@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_mic_open@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_more@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "room_menu_more3x.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_new_message@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_new_message@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_close@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_close@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_open@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_open@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_background@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_background@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_info_back@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_info_back@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_info_gift_effect@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_info_gift_effect@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_info_setting@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_info_setting@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_info_share@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_info_share@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -61,6 +61,9 @@ NS_ASSUME_NONNULL_BEGIN
+ (UIColor *)switchOffColor;
/// 音游开关按钮的 开启的颜色 0x248cfe
+ (UIColor *)switchOnColor;
#pragma mark -房间内相关的颜色
+ (UIColor *)roomOnLineIdenColor;
@end
NS_ASSUME_NONNULL_END

View File

@@ -106,4 +106,9 @@
return UIColorFromRGB(0x248cfe);
}
#pragma mark -
+ (UIColor *)roomOnLineIdenColor {
return UIColorFromRGB(0x3EFED7);
}
@end

View File

@@ -54,6 +54,7 @@
_logoImageView.userInteractionEnabled = YES;
_logoImageView.layer.masksToBounds = YES;
_logoImageView.contentMode = UIViewContentModeScaleAspectFill;
_logoImageView.tag = 100000;
}
return _logoImageView;
}
@@ -82,6 +83,12 @@
}
return self;
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView * view = [self.cycleScrollView hitTest:point withEvent:event];
return view;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.cycleScrollView];

View File

@@ -15,7 +15,9 @@
if (point.y > (250 + kSafeAreaTopHeight)) {
return self;
} else {
return [[(XPMineUserInfoViewController *)self.userInfoVC getHeadHitView] hitTest:point withEvent:event];
UIView* topView= [(XPMineUserInfoViewController *)self.userInfoVC getHeadHitView];
UIView * View = [topView hitTest:point withEvent:event];
return View;
}
}

View File

@@ -30,6 +30,10 @@
#import "XPMineRechargeViewController.h"
#import "XPWebViewController.h"
#warning todo
#import "BaseNavigationController.h"
#import "XPRoomViewController.h"
@interface XPMineViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineProtocol, XPMineMatchTableViewCellDelegate, XPMineHeadViewDelegate>
///
@@ -126,6 +130,13 @@
break;
case XPMineItemType_Account:
{
XPRoomViewController * roomVC = [[XPRoomViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:roomVC];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
return;
#warning to do
XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init];
[self.navigationController pushViewController:rechargeVC animated:YES];
}

View File

@@ -0,0 +1,27 @@
//
// XPRoomMenuItem.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/14.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, XPRoomMenuItemType) {
XPRoomMenuItemType_Input = 1,
XPRoomMenuItemType_Mic,///话筒
XPRoomMenuItemType_Voice, ///声音
XPRoomMenuItemType_Face,///表情
XPRoomMenuItemType_Message,///房间私聊
XPRoomMenuItemType_More,///更多
XPRoomMenuItemType_Gift,///礼物
};
@interface XPRoomMenuItem : NSObject
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// XPRoomMenuItem.m
// xplan-ios
//
// Created by on 2021/10/14.
//
#import "XPRoomMenuItem.h"
@implementation XPRoomMenuItem
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomActivityManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomActivityManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,31 @@
//
// XPRoomActivityManager.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomActivityManager.h"
///View
#import "XPRoomActivityView.h"
@interface XPRoomActivityManager ()
///View
@property (nonatomic,strong) XPRoomActivityView *activityView;
@end
@implementation XPRoomActivityManager
- (UIView *)containerView {
return self.activityView;
}
- (XPRoomActivityView *)activityView {
if (!_activityView) {
_activityView = [[XPRoomActivityView alloc] init];
}
return _activityView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// BaseUIManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomBackUIManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,30 @@
//
// BaseUIManager.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomBackUIManager.h"
#import "XPRoomBackUIView.h"
@interface XPRoomBackUIManager ()
///
@property (nonatomic,strong) XPRoomBackUIView *roomBackView;
@end
@implementation XPRoomBackUIManager
- (UIView *)containerView {
return self.roomBackView;
}
- (XPRoomBackUIView *)roomBackView {
if (!_roomBackView) {
_roomBackView = [[XPRoomBackUIView alloc] init];
}
return _roomBackView;
}
@end

View File

@@ -0,0 +1,17 @@
//
// XPRoomBaseManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomBaseManager : NSObject
///
@property (nonatomic,strong, readonly) UIView * containerView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,26 @@
//
// XPRoomBaseManager.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomBaseManager.h"
@interface XPRoomBaseManager ()
///
@property (nonatomic,strong) UIView * containerView;
@end
@implementation XPRoomBaseManager
- (UIView *)containerView {
if (!_containerView) {
_containerView = [[UIView alloc] init];
_containerView.backgroundColor = [UIColor clearColor];
}
return _containerView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomMenuManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMenuManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,29 @@
//
// XPRoomMenuManager.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomMenuManager.h"
#import "XPRoomBottomMenuView.h"
@interface XPRoomMenuManager ()
///
@property (nonatomic,strong) XPRoomBottomMenuView *menuView;
@end
@implementation XPRoomMenuManager
- (UIView *)containerView {
return self.menuView;
}
#pragma mark - Getters And Setters
- (XPRoomBottomMenuView *)menuView {
if (!_menuView) {
_menuView = [[XPRoomBottomMenuView alloc] init];
}
return _menuView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomPositionManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMessageManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,30 @@
//
// XPRoomPositionManager.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomMessageManager.h"
#import "XPRoomMessageView.h"
@interface XPRoomMessageManager ()
///
@property (nonatomic,strong) XPRoomMessageView *messageView;
@end
@implementation XPRoomMessageManager
- (UIView *)containerView {
return self.messageView;
}
- (XPRoomMessageView *)messageView {
if (!_messageView) {
_messageView = [[XPRoomMessageView alloc] init];
}
return _messageView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomPositionManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,28 @@
//
// XPRoomPositionManager.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomPositionManager.h"
#import "XPRoomPositionView.h"
@interface XPRoomPositionManager ()
///
@property (nonatomic,strong) XPRoomPositionView *positionView;
@end
@implementation XPRoomPositionManager
- (UIView *)containerView {
return self.positionView;
}
- (XPRoomPositionView *)positionView {
if (!_positionView) {
_positionView = [[XPRoomPositionView alloc] init];
}
return _positionView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomInfoManager.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import "XPRoomBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomInfoManager : XPRoomBaseManager
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,29 @@
//
// XPRoomInfoManager.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomInfoManager.h"
#import "XPRoomInfoView.h"
@interface XPRoomInfoManager ()
///
@property (nonatomic,strong) XPRoomInfoView *infoView;
@end
@implementation XPRoomInfoManager
#pragma mark - OVer load
- (UIView *)containerView {
return self.infoView;
}
#pragma mark - Getters And Setters
- (XPRoomInfoView *)infoView {
if (!_infoView) {
_infoView = [[XPRoomInfoView alloc] init];
}
return _infoView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomActivityView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/12.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomActivityView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,99 @@
//
// XPRoomActivityView.m
// xplan-ios
//
// Created by on 2021/10/12.
//
#import "XPRoomActivityView.h"
///Third
#import <Masonry/Masonry.h>
#import <SDCycleScrollView/SDCycleScrollView.h>
@interface XPRoomActivityView ()<SDCycleScrollViewDelegate>
///
@property (nonatomic,strong) UIStackView *stackView;
///
@property (nonatomic,strong) SDCycleScrollView *cycleScrollView;
///
@property (nonatomic,strong) UIView * placeHolderView;
@end
@implementation XPRoomActivityView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
#warning to do Malloc
[self initMallocData];
}
return self;
}
#pragma mark - Private Method
- (void)initMallocData {
NSArray * array = @[@"https://image.doudouyue.com//FpRJcAcPiamtkcdyDEh96c1RZGfb?imageslim", @"https://image.doudouyue.com//FpRJcAcPiamtkcdyDEh96c1RZGfb?imageslim", @"https://image.doudouyue.com//FpRJcAcPiamtkcdyDEh96c1RZGfb?imageslim"];
self.cycleScrollView.imageURLStringsGroup = array;
[self.cycleScrollView autoScroll];
}
- (void)initSubViews {
[self addSubview:self.stackView];
[self.stackView addArrangedSubview:self.cycleScrollView];
[self.stackView addArrangedSubview:self.placeHolderView];
}
- (void)initSubViewConstraints {
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
[self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(65, 65));
}];
}
#pragma mark - Getters And Setters
- (SDCycleScrollView *)cycleScrollView {
if (!_cycleScrollView) {
_cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil];
_cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter;
_cycleScrollView.currentPageDotColor = [UIColor whiteColor];
_cycleScrollView.pageDotColor = [UIColor colorWithWhite:1 alpha:0.15];
_cycleScrollView.currentPageDotImage = [UIImage imageNamed:@"room_activity_banner_select"];
_cycleScrollView.pageDotImage = [UIImage imageNamed:@"room_activity_banner_normal"];
_cycleScrollView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00];
_cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFit;
_cycleScrollView.pageControlBottomOffset = -20;
}
return _cycleScrollView;
}
- (UIView *)placeHolderView {
if (!_placeHolderView) {
_placeHolderView = [[UIView alloc] init];
_placeHolderView.backgroundColor = [UIColor clearColor];
[_placeHolderView setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal];
[_placeHolderView setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];
}
return _placeHolderView;
}
- (UIStackView *)stackView {
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisVertical;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 10;
}
return _stackView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomBaseUIView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomBackUIView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,51 @@
//
// XPRoomBaseUIView.m
// xplan-ios
//
// Created by on 2021/10/11.
// View
#import "XPRoomBackUIView.h"
///Third
#import <Masonry/Masonry.h>
@interface XPRoomBackUIView ()
///
@property (nonatomic,strong) UIImageView *backImageView;
@end
@implementation XPRoomBackUIView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.backImageView];
}
- (void)initSubViewConstraints {
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
}
#pragma mark - Getters And Setters
- (UIImageView *)backImageView {
if (!_backImageView) {
_backImageView = [[UIImageView alloc] init];
_backImageView.userInteractionEnabled = YES;
_backImageView.image = [UIImage imageNamed:@"room_background"];
_backImageView.layer.masksToBounds = YES;
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
}
return _backImageView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomBottomMenuView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomBottomMenuView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,181 @@
//
// XPRoomBottomMenuView.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomBottomMenuView.h"
///Third
#import <Masonry/Masonry.h>
///Model
#import "XPRoomMenuItem.h"
@interface XPRoomBottomMenuView ()
///
@property (nonatomic,strong) UIStackView *stackView;
///
@property (nonatomic,strong) UIButton *inputButton;
///
@property (nonatomic,strong) UIButton *micButton;
///
@property (nonatomic,strong) UIButton *voiceButton;
///
@property (nonatomic,strong) UIButton *faceButton;
///
@property (nonatomic,strong) UIButton *messageButton;
///
@property (nonatomic,strong) UIButton *moreButton;
///
@property (nonatomic,strong) UIButton *giftButton;
///
@property (nonatomic,strong) UIView * placeHolderView;
@end
@implementation XPRoomBottomMenuView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Response
- (void)menuButtonAction:(UIButton *)sender {
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.stackView];
[self.stackView addArrangedSubview:self.inputButton];
[self.stackView addArrangedSubview:self.micButton];
[self.stackView addArrangedSubview:self.voiceButton];
[self.stackView addArrangedSubview:self.faceButton];
[self.stackView addArrangedSubview:self.messageButton];
[self.stackView addArrangedSubview:self.moreButton];
[self.stackView addArrangedSubview:self.placeHolderView];
[self.stackView addArrangedSubview:self.giftButton];
}
- (void)initSubViewConstraints {
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self).inset(15);
make.top.bottom.mas_equalTo(self);
}];
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(100, 30));
}];
[self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(38, 38));
}];
}
#pragma mark - Getters And Setters
- (UIButton *)inputButton {
if (!_inputButton) {
_inputButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_inputButton setTitle:@"说点什么..." forState:UIControlStateNormal];
[_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_inputButton.titleLabel.font = [UIFont systemFontOfSize:15];
_inputButton.layer.masksToBounds = YES;
_inputButton.layer.cornerRadius = 15;
[_inputButton setBackgroundImage:[UIImage imageNamed:@"room_menu_input_bg"] forState:UIControlStateNormal];
_inputButton.tag = XPRoomMenuItemType_Input;
[_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _inputButton;
}
- (UIButton *)micButton {
if (!_micButton) {
_micButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected];
_micButton.tag = XPRoomMenuItemType_Mic;
[_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _micButton;
}
- (UIButton *)voiceButton {
if (!_voiceButton) {
_voiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_open"] forState:UIControlStateNormal];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_close"] forState:UIControlStateSelected];
_voiceButton.tag = XPRoomMenuItemType_Voice;
[_voiceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _voiceButton;
}
- (UIButton *)faceButton {
if (!_faceButton) {
_faceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected];
_faceButton.tag = XPRoomMenuItemType_Face;
[_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _faceButton;
}
- (UIButton *)messageButton {
if (!_messageButton) {
_messageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected];
_messageButton.tag = XPRoomMenuItemType_Message;
[_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _messageButton;
}
- (UIButton *)moreButton {
if (!_moreButton) {
_moreButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateNormal];
[_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateSelected];
_moreButton.tag = XPRoomMenuItemType_Voice;
[_moreButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _moreButton;
}
- (UIButton *)giftButton {
if (!_giftButton) {
_giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
_giftButton.tag = XPRoomMenuItemType_Voice;
[_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _giftButton;
}
- (UIView *)placeHolderView {
if (!_placeHolderView) {
_placeHolderView = [[UIView alloc] init];
_placeHolderView.backgroundColor = [UIColor clearColor];
[_placeHolderView setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal];
}
return _placeHolderView;
}
- (UIStackView *)stackView {
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 8;
}
return _stackView;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomMessageView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMessageView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,31 @@
//
// XPRoomMessageView.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomMessageView.h"
@implementation XPRoomMessageView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [UIColor orangeColor];
}
- (void)initSubViewConstraints {
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomPositionView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,31 @@
//
// XPRoomPositionView.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomPositionView.h"
@implementation XPRoomPositionView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [UIColor greenColor];
}
- (void)initSubViewConstraints {
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomInfoView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomInfoView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,257 @@
//
// XPRoomInfoView.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomInfoView.h"
///Third
#import <Masonry/Masonry.h>
#import <MarqueeLabel.h>
#import <YYText/YYLabel.h>
///Tool
#import "UIImage+Utils.h"
#import "UIButton+EnlargeTouchArea.h"
#import "XPMacro.h"
#import "ThemeColor.h"
@interface XPRoomInfoView ()
///
@property (nonatomic,strong) UIButton *backButton;
///
@property (nonatomic,strong) UIStackView *nickStackView;
///
@property (nonatomic,strong) UIStackView *titleStackView;
///
@property (nonatomic,strong) MarqueeLabel *titleLabel;
///
@property (nonatomic,strong) UIImageView *giftEffectImageView;
///
@property (nonatomic,strong) UIStackView *onlineStackView;
///绿
@property (nonatomic,strong) UIView * greenDotView;
///id线
@property (nonatomic,strong) YYLabel *idLabel;
///
@property (nonatomic,strong) UIButton *collectButton;
///
@property (nonatomic,strong) UIButton *shareButton;
///
@property (nonatomic,strong) UIButton *settingButton;
@end
@implementation XPRoomInfoView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
#warning to do
[self initMallocData];
}
return self;
}
#pragma mark - Response
- (void)backButtonAction:(UIButton *)sender {
}
- (void)shareButtonAction:(UIButton *)sender{
}
- (void)settingButtonAction:(UIButton *)sender {
}
#pragma mark - Private Method
- (void)initMallocData {
self.titleLabel.text = @"这是房间标题";
self.idLabel.text = @"这是在线人数1000 ID:100000";
}
- (void)initSubViews {
[self addSubview:self.backButton];
[self addSubview:self.nickStackView];
[self addSubview:self.collectButton];
[self addSubview:self.shareButton];
[self addSubview:self.settingButton];
[self.nickStackView addArrangedSubview:self.titleStackView];
[self.nickStackView addArrangedSubview:self.onlineStackView];
[self.onlineStackView addArrangedSubview:self.greenDotView];
[self.onlineStackView addArrangedSubview:self.idLabel];
[self.titleStackView addArrangedSubview:self.titleLabel];
[self.titleStackView addArrangedSubview:self.giftEffectImageView];
}
- (void)initSubViewConstraints {
[self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(14);
make.bottom.equalTo(self).offset(-14);
make.height.width.equalTo(@22);
}];
//
[self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-14);
make.centerY.mas_equalTo(self.backButton);
make.width.height.mas_equalTo(20);
}];
[self.shareButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.settingButton.mas_left).offset(-17);
make.centerY.mas_equalTo(self.backButton);
make.width.height.mas_equalTo(20);
}];
[self.collectButton mas_remakeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.backButton);
make.left.equalTo(self.nickStackView.mas_right).offset(5);
make.width.mas_equalTo(@53);
make.height.mas_equalTo(@22);
}];
[self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self.backButton);
make.left.mas_equalTo(self.backButton.mas_right).offset(10);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_lessThanOrEqualTo(100);
}];
[self.greenDotView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(3,3));
}];
}
#pragma mark - Getters And Setters
- (UIButton *)backButton{
if (!_backButton) {
_backButton = [[UIButton alloc] init];
[_backButton setImage:[UIImage imageNamed:@"room_info_back"] forState:UIControlStateNormal];
[_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[_backButton setEnlargeEdgeWithTop:15 right:15 bottom:15 left:15];
}
return _backButton;
}
- (UIButton *)shareButton {
if(!_shareButton){
_shareButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_shareButton setImage:[UIImage imageNamed:@"room_info_share"] forState:UIControlStateNormal];
[_shareButton addTarget:self action:@selector(shareButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[_shareButton setEnlargeEdgeWithTop:8 right:8 bottom:8 left:8];
}
return _shareButton;
}
- (UIButton *)settingButton {
if (!_settingButton) {
_settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_settingButton setImage:[UIImage imageNamed:@"room_info_setting"] forState:UIControlStateNormal];
[_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[_settingButton setEnlargeEdgeWithTop:8 right:8 bottom:8 left:8];
}
return _settingButton;
}
- (UIButton *)collectButton {
if (!_collectButton) {
_collectButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_collectButton setTitle:@"收藏" forState:UIControlStateNormal];
[_collectButton setTitle:@"已收藏" forState:UIControlStateSelected];
[_collectButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateNormal];
[_collectButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateSelected];
[_collectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[ThemeColor confirmButtonGradientStartColor], [ThemeColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(53, 22)] forState:UIControlStateNormal];
_collectButton.titleLabel.font = [UIFont systemFontOfSize:12];
_collectButton.layer.cornerRadius = 11;
_collectButton.layer.masksToBounds = YES;
}
return _collectButton;
}
- (UIStackView *)nickStackView {
if (!_nickStackView) {
_nickStackView = [[UIStackView alloc] init];
_nickStackView.axis = UILayoutConstraintAxisVertical;
_nickStackView.distribution = UIStackViewDistributionFill;
_nickStackView.alignment = UIStackViewAlignmentLeading;
_nickStackView.spacing = 3;
}
return _nickStackView;
}
- (UIStackView *)titleStackView {
if (!_titleStackView) {
_titleStackView = [[UIStackView alloc] init];
_titleStackView.axis = UILayoutConstraintAxisHorizontal;
_titleStackView.distribution = UIStackViewDistributionFill;
_titleStackView.alignment = UIStackViewAlignmentCenter;
_titleStackView.spacing = 5;
}
return _titleStackView;
}
- (MarqueeLabel *)titleLabel{
if (!_titleLabel) {
_titleLabel = [[MarqueeLabel alloc] init];
_titleLabel.scrollDuration = 8.0;
_titleLabel.fadeLength = 6.0f;
_titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:14];
_titleLabel.textColor = [ThemeColor mainTextColor];
}
return _titleLabel;
}
- (UIImageView *)giftEffectImageView {
if (!_giftEffectImageView) {
_giftEffectImageView = [[UIImageView alloc] init];
_giftEffectImageView.userInteractionEnabled = YES;
_giftEffectImageView.image = [UIImage imageNamed:@"room_info_gift_effect"];
}
return _giftEffectImageView;
}
- (UIStackView *)onlineStackView {
if (!_onlineStackView) {
_onlineStackView = [[UIStackView alloc] init];
_onlineStackView.axis = UILayoutConstraintAxisHorizontal;
_onlineStackView.distribution = UIStackViewDistributionFill;
_onlineStackView.alignment = UIStackViewAlignmentCenter;
_onlineStackView.spacing = 2;
}
return _onlineStackView;
}
- (UIView *)greenDotView {
if (!_greenDotView) {
_greenDotView = [[UIView alloc] init];
_greenDotView.backgroundColor = [ThemeColor roomOnLineIdenColor];
_greenDotView.layer.masksToBounds = YES;
_greenDotView.layer.cornerRadius = 1.5;
}
return _greenDotView;
}
- (YYLabel *)idLabel {
if (!_idLabel) {
_idLabel = [[YYLabel alloc] init];
_idLabel.textColor = [ThemeColor secondTextColor];
_idLabel.font = [UIFont systemFontOfSize:9];
}
return _idLabel;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomViewController.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import "MvpViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomViewController : MvpViewController
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,140 @@
//
// XPRoomViewController.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomViewController.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "XPMacro.h"
///Manager
#import "XPRoomBackUIManager.h"
#import "XPRoomInfoManager.h"
#import "XPRoomPositionManager.h"
#import "XPRoomMessageManager.h"
#import "XPRoomMenuManager.h"
#import "XPRoomActivityManager.h"
@interface XPRoomViewController ()
///
@property (nonatomic,strong) XPRoomBackUIManager *backManager;
///
@property (nonatomic,strong) XPRoomInfoManager *infoManager;
///
@property (nonatomic,strong) XPRoomPositionManager *positionManager;
///
@property (nonatomic,strong) XPRoomMessageManager *messageManager;
///
@property (nonatomic,strong) XPRoomMenuManager *menuManager;
///
@property (nonatomic,strong) XPRoomActivityManager *activityManager;
@end
@implementation XPRoomViewController
- (BOOL)isHiddenNavBar {
return YES;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
}
#pragma mark - Private Method
- (void)initSubViews {
[self.view addSubview:self.backManager.containerView];
[self.view addSubview:self.infoManager.containerView];
[self.view addSubview:self.positionManager.containerView];
[self.view addSubview:self.messageManager.containerView];
[self.view addSubview:self.menuManager.containerView];
[self.view addSubview:self.activityManager.containerView];
}
- (void)initSubViewConstraints {
[self.backManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view);
}];
[self.infoManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.view);
make.height.mas_equalTo(kNavigationHeight);
}];
[self.positionManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.view);
make.top.mas_equalTo(self.infoManager.containerView.mas_bottom);
make.height.mas_equalTo(@280);
}];
[self.messageManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.positionManager.containerView.mas_bottom);
make.bottom.equalTo(self.menuManager.containerView.mas_top).offset(-5);
make.left.equalTo(self.view);
make.right.equalTo(self.activityManager.containerView.mas_left).offset(-10);
}];
[self.menuManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.view);
make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8);
make.height.mas_equalTo(40);
}];
[self.activityManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.messageManager.containerView);
make.right.mas_equalTo(self.view);
make.bottom.mas_equalTo(self.menuManager.containerView.mas_top).offset(-5);
make.width.mas_equalTo(80);
}];
}
#pragma mark - Getters And Setters
- (XPRoomBackUIManager *)backManager {
if (!_backManager) {
_backManager = [[XPRoomBackUIManager alloc] init];
}
return _backManager;
}
- (XPRoomInfoManager *)infoManager {
if (!_infoManager) {
_infoManager = [[XPRoomInfoManager alloc] init];
}
return _infoManager;
}
- (XPRoomPositionManager *)positionManager {
if (!_positionManager) {
_positionManager = [[XPRoomPositionManager alloc] init];
}
return _positionManager;
}
- (XPRoomMessageManager *)messageManager {
if (!_messageManager) {
_messageManager = [[XPRoomMessageManager alloc] init];
}
return _messageManager;
}
- (XPRoomMenuManager *)menuManager {
if (!_menuManager) {
_menuManager = [[XPRoomMenuManager alloc] init];
}
return _menuManager;
}
- (XPRoomActivityManager *)activityManager {
if (!_activityManager) {
_activityManager = [[XPRoomActivityManager alloc] init];
}
return _activityManager;
}
@end