房间s1的UI 已经布局完成 开始接入云信

This commit is contained in:
fengshuo
2021-10-18 14:28:37 +08:00
parent 64be85e084
commit 1d9396b0b5
31 changed files with 641 additions and 46 deletions

View File

@@ -39,5 +39,7 @@ target 'xplan-ios' do
pod 'mob_sharesdk/ShareSDKPlatforms/QQ'
pod 'mob_sharesdk/ShareSDKPlatforms/WeChat'
pod 'mob_sharesdk/ShareSDKPlatforms/Apple'
#调试
pod 'LookinServer', :configurations => ['Debug']
end

View File

@@ -19,6 +19,7 @@ PODS:
- FFPopup (1.1.5)
- HappyDNS (0.3.17)
- IAPHelper (1.1)
- LookinServer (1.0.4)
- MarqueeLabel-ObjC (3.3.0)
- Masonry (1.1.0)
- MBProgressHUD (1.2.0)
@@ -57,6 +58,7 @@ DEPENDENCIES:
- Base64
- FFPopup
- IAPHelper
- LookinServer
- MarqueeLabel-ObjC
- Masonry
- MBProgressHUD
@@ -82,6 +84,7 @@ SPEC REPOS:
- FFPopup
- HappyDNS
- IAPHelper
- LookinServer
- MarqueeLabel-ObjC
- Masonry
- MBProgressHUD
@@ -104,6 +107,7 @@ SPEC CHECKSUMS:
FFPopup: a208dcee8db3e54ec4a88fcd6481f6f5d85b7a83
HappyDNS: 848ef73e24f2b0e2752064223ce2dc0dd88900ea
IAPHelper: fd74f53b0ac142eed085777b88b86a11746a2dd4
LookinServer: 743c1681771d0a8dcc38825325a080c3186404a5
MarqueeLabel-ObjC: 696eaa82e4fcc7fb53e4fdf37ac138f03bf022d6
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
@@ -119,6 +123,6 @@ SPEC CHECKSUMS:
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
PODFILE CHECKSUM: 111c1baf4d2041d86b97a47854c455685b233ed1
PODFILE CHECKSUM: 359c488aca65b2f81870e252d1da6f7da7b45dd5
COCOAPODS: 1.10.1

View File

@@ -127,6 +127,11 @@
E86596462701612D00846EBD /* UIImageView+Vague.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596452701612D00846EBD /* UIImageView+Vague.m */; };
E86596512701A1C000846EBD /* StatisticsService.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596502701A1C000846EBD /* StatisticsService.m */; };
E86596542701A55500846EBD /* StatisticsServiceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596532701A55500846EBD /* StatisticsServiceHelper.m */; };
E868070A271959DB0024F48F /* XPRoomPositionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8680709271959DB0024F48F /* XPRoomPositionView.m */; };
E868070F27195DD30024F48F /* XPRoomPositionLayoutImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = E868070E27195DD30024F48F /* XPRoomPositionLayoutImpl.m */; };
E868071327195E1A0024F48F /* XPRoomPositionDataSourceImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = E868071227195E1A0024F48F /* XPRoomPositionDataSourceImpl.m */; };
E8680718271967B00024F48F /* XPRoomPostionBaseItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8680717271967B00024F48F /* XPRoomPostionBaseItemView.m */; };
E868071B271969A50024F48F /* XCRoomPostionNickView.m in Sources */ = {isa = PBXBuildFile; fileRef = E868071A271969A50024F48F /* XCRoomPostionNickView.m */; };
E872308926E89BE000B90D4F /* LoginPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E872308826E89BE000B90D4F /* LoginPhoneViewController.m */; };
E872308D26E89DAA00B90D4F /* LoginInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = E872308C26E89DAA00B90D4F /* LoginInputView.m */; };
E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E872309226E8D31500B90D4F /* LoginVerifCodeView.m */; };
@@ -176,7 +181,7 @@
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 */; };
E8AEAEF627141C910017FCE0 /* XPRoomPositionContainView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF527141C910017FCE0 /* XPRoomPositionContainView.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 */; };
@@ -453,6 +458,18 @@
E86596502701A1C000846EBD /* StatisticsService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatisticsService.m; sourceTree = "<group>"; };
E86596522701A55500846EBD /* StatisticsServiceHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatisticsServiceHelper.h; sourceTree = "<group>"; };
E86596532701A55500846EBD /* StatisticsServiceHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatisticsServiceHelper.m; sourceTree = "<group>"; };
E8680708271959DB0024F48F /* XPRoomPositionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionView.h; sourceTree = "<group>"; };
E8680709271959DB0024F48F /* XPRoomPositionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionView.m; sourceTree = "<group>"; };
E868070D27195DD30024F48F /* XPRoomPositionLayoutImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionLayoutImpl.h; sourceTree = "<group>"; };
E868070E27195DD30024F48F /* XPRoomPositionLayoutImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionLayoutImpl.m; sourceTree = "<group>"; };
E868071027195DF00024F48F /* XPRoomPositionLayoutProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionLayoutProtocol.h; sourceTree = "<group>"; };
E868071127195E1A0024F48F /* XPRoomPositionDataSourceImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionDataSourceImpl.h; sourceTree = "<group>"; };
E868071227195E1A0024F48F /* XPRoomPositionDataSourceImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionDataSourceImpl.m; sourceTree = "<group>"; };
E868071427195E340024F48F /* XPRoomPositionDataSourceProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionDataSourceProtocol.h; sourceTree = "<group>"; };
E8680716271967B00024F48F /* XPRoomPostionBaseItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPostionBaseItemView.h; sourceTree = "<group>"; };
E8680717271967B00024F48F /* XPRoomPostionBaseItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPostionBaseItemView.m; sourceTree = "<group>"; };
E8680719271969A50024F48F /* XCRoomPostionNickView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCRoomPostionNickView.h; sourceTree = "<group>"; };
E868071A271969A50024F48F /* XCRoomPostionNickView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCRoomPostionNickView.m; sourceTree = "<group>"; };
E872308726E89BE000B90D4F /* LoginPhoneViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPhoneViewController.h; sourceTree = "<group>"; };
E872308826E89BE000B90D4F /* LoginPhoneViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPhoneViewController.m; sourceTree = "<group>"; };
E872308B26E89DAA00B90D4F /* LoginInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginInputView.h; sourceTree = "<group>"; };
@@ -546,8 +563,8 @@
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>"; };
E8AEAEF427141C910017FCE0 /* XPRoomPositionContainView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPositionContainView.h; sourceTree = "<group>"; };
E8AEAEF527141C910017FCE0 /* XPRoomPositionContainView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPositionContainView.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>"; };
@@ -1279,6 +1296,49 @@
path = StatisticsService;
sourceTree = "<group>";
};
E8680707271959090024F48F /* SubViews */ = {
isa = PBXGroup;
children = (
E86807152719678B0024F48F /* View */,
E868070C27195D4C0024F48F /* Object */,
E868070B27195AA30024F48F /* Config */,
E8680708271959DB0024F48F /* XPRoomPositionView.h */,
E8680709271959DB0024F48F /* XPRoomPositionView.m */,
);
path = SubViews;
sourceTree = "<group>";
};
E868070B27195AA30024F48F /* Config */ = {
isa = PBXGroup;
children = (
);
path = Config;
sourceTree = "<group>";
};
E868070C27195D4C0024F48F /* Object */ = {
isa = PBXGroup;
children = (
E868070D27195DD30024F48F /* XPRoomPositionLayoutImpl.h */,
E868070E27195DD30024F48F /* XPRoomPositionLayoutImpl.m */,
E868071027195DF00024F48F /* XPRoomPositionLayoutProtocol.h */,
E868071127195E1A0024F48F /* XPRoomPositionDataSourceImpl.h */,
E868071227195E1A0024F48F /* XPRoomPositionDataSourceImpl.m */,
E868071427195E340024F48F /* XPRoomPositionDataSourceProtocol.h */,
);
path = Object;
sourceTree = "<group>";
};
E86807152719678B0024F48F /* View */ = {
isa = PBXGroup;
children = (
E8680716271967B00024F48F /* XPRoomPostionBaseItemView.h */,
E8680717271967B00024F48F /* XPRoomPostionBaseItemView.m */,
E8680719271969A50024F48F /* XCRoomPostionNickView.h */,
E868071A271969A50024F48F /* XCRoomPostionNickView.m */,
);
path = View;
sourceTree = "<group>";
};
E872308A26E89D5100B90D4F /* CustomView */ = {
isa = PBXGroup;
children = (
@@ -1526,8 +1586,9 @@
E8AEAEEA27141ACC0017FCE0 /* PositionView */ = {
isa = PBXGroup;
children = (
E8AEAEF427141C910017FCE0 /* XPRoomPositionView.h */,
E8AEAEF527141C910017FCE0 /* XPRoomPositionView.m */,
E8680707271959090024F48F /* SubViews */,
E8AEAEF427141C910017FCE0 /* XPRoomPositionContainView.h */,
E8AEAEF527141C910017FCE0 /* XPRoomPositionContainView.m */,
);
path = PositionView;
sourceTree = "<group>";
@@ -1974,6 +2035,7 @@
E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */,
189DD74A26E21D8400AB55B1 /* SSKeychain.m in Sources */,
E8B846CF26FDD96100A777FE /* XPMineRechageHeadView.m in Sources */,
E868070F27195DD30024F48F /* XPRoomPositionLayoutImpl.m in Sources */,
186A534926FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m in Sources */,
E81C27AE26EF39AB0031E639 /* AppDelegate+ThirdConfig.m in Sources */,
E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */,
@@ -2021,6 +2083,7 @@
E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */,
18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */,
E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */,
E8680718271967B00024F48F /* XPRoomPostionBaseItemView.m in Sources */,
E8AEAEE4271418DA0017FCE0 /* XPRoomBaseManager.m in Sources */,
E8B825CD26EA18C8009E8E9F /* ThemeColor.m in Sources */,
E8AC720D26F435F5007D6E91 /* UIImageView+LoadImage.m in Sources */,
@@ -2058,10 +2121,12 @@
E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */,
186A536926FC6F2E00D67B2C /* XCShareView.m in Sources */,
186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */,
E868070A271959DB0024F48F /* XPRoomPositionView.m in Sources */,
E8B825BF26E9E57D009E8E9F /* LoginTicketInfo.m in Sources */,
187EEEF026E89FE8002833B2 /* AccountInfoStorage.m in Sources */,
186A536B26FC6F2E00D67B2C /* XCShareItemCell.m in Sources */,
E8B846C526FDB41A00A777FE /* XPMineUserInfolbumPresenter.m in Sources */,
E868071327195E1A0024F48F /* XPRoomPositionDataSourceImpl.m in Sources */,
E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */,
186A534626FC6ED900D67B2C /* TTPopup.m in Sources */,
E81C278C26EAFAF60031E639 /* Base64.m in Sources */,
@@ -2086,12 +2151,13 @@
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */,
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */,
E8AEAEF627141C910017FCE0 /* XPRoomPositionView.m in Sources */,
E8AEAEF627141C910017FCE0 /* XPRoomPositionContainView.m in Sources */,
E872308926E89BE000B90D4F /* LoginPhoneViewController.m in Sources */,
18E7B29026EA0E6B0064BC9B /* FlutterBoost+Xplan.m in Sources */,
E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */,
189DD75926E6003C00AB55B1 /* Api.m in Sources */,
E88B5CB826FB325200DA9178 /* XPMineTeenagerPwdPresenter.m in Sources */,
E868071B271969A50024F48F /* XCRoomPostionNickView.m in Sources */,
E89DA66727006443008483C1 /* RechargeStorage.m in Sources */,
189DD53F26DE255600AB55B1 /* main.m in Sources */,
E8AE427627153B7E00BEEBB2 /* XPRoomPositionManager.m in Sources */,

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -10,7 +10,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionManager : XPRoomBaseManager
- (CGFloat)getContainerViewHeight;
@end
NS_ASSUME_NONNULL_END

View File

@@ -6,11 +6,11 @@
//
#import "XPRoomPositionManager.h"
#import "XPRoomPositionView.h"
#import "XPRoomPositionContainView.h"
@interface XPRoomPositionManager ()
///
@property (nonatomic,strong) XPRoomPositionView *positionView;
@property (nonatomic,strong) XPRoomPositionContainView *positionView;
@end
@implementation XPRoomPositionManager
@@ -19,10 +19,15 @@
return self.positionView;
}
- (XPRoomPositionView *)positionView {
- (XPRoomPositionContainView *)positionView {
if (!_positionView) {
_positionView = [[XPRoomPositionView alloc] init];
_positionView = [[XPRoomPositionContainView alloc] init];
}
return _positionView;
}
- (CGFloat)getContainerViewHeight {
return [self.positionView positionContainerViewHeight];
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPRoomPositionDataSourceImpl.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionDataSourceImpl : NSObject
@end
NS_ASSUME_NONNULL_END

View File

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

View File

@@ -0,0 +1,16 @@
//
// XPRoomPositionDataSourceProtocol.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol XPRoomPositionDataSourceProtocol <NSObject>
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,19 @@
//
// XPRoomPositionLayoutImpl.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <Foundation/Foundation.h>
///P
#import "XPRoomPositionLayoutProtocol.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionLayoutImpl : NSObject<XPRoomPositionLayoutProtocol>
- (CGFloat)getPositionViewHeight;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,131 @@
//
// XPRoomPositionLayoutImpl.m
// xplan-ios
//
// Created by on 2021/10/15.
//
#import "XPRoomPositionLayoutImpl.h"
///Tool
#import "XPMacro.h"
///View
#import "XCRoomPostionNickView.h"
@implementation XPRoomPositionLayoutImpl
///item
- (int)numberOfItems {
return 9;
}
///itemclass
- (Class)classOfPositionItme {
return [XCRoomPostionNickView class];
}
///item
- (NSArray<NSValue *> *)getPositionItemsCenter {
int number = [self numberOfItems];
CGSize itemSize = [self getNormalItemSize];
CGSize ownerSize = [self getOwnerItemSize];
CGFloat lineSpace = [self getItemsLineSpace];
CGFloat interiteSpace = [self getItemsInteritemSpace];
CGFloat ownerItemMaxY = ownerSize.height + [self getOwnerItemToNormalItemHeight];
CGPoint ownerCenter = CGPointMake(KScreenWidth / 2, ownerSize.height / 2);
NSMutableArray* itemArray = [NSMutableArray arrayWithCapacity:number];
NSValue * ownerCenterValue = [NSValue valueWithCGPoint:ownerCenter];
[itemArray addObject:ownerCenterValue];
for (int i = 1; i < number; i++) {
CGPoint itemCenter = CGPointZero;
if (i <= 4) {
itemCenter = CGPointMake(itemSize.width / 2 + (itemSize.width + interiteSpace) * (i -1), ownerItemMaxY + itemSize.height/ 2);
} else {
itemCenter = CGPointMake(itemSize.width / 2 + (itemSize.width + interiteSpace) * (i -1), ownerItemMaxY + itemSize.height/ 2 + itemSize.height + lineSpace);
}
NSValue * itemCenterValue = [NSValue valueWithCGPoint:itemCenter];
[itemArray addObject:itemCenterValue];
}
return itemArray;
}
///item
- (NSArray<NSValue *> *)getPositionItemsRect {
int number = [self numberOfItems];
CGSize itemSize = [self getNormalItemSize];
CGSize ownerSize = [self getOwnerItemSize];
CGFloat lineSpace = [self getItemsLineSpace];
CGFloat interiteSpace = [self getItemsInteritemSpace];
CGFloat ownerItemMaxY = [self getOwnerItemSize].height + [self getOwnerItemToNormalItemHeight];
NSMutableArray* itemArray = [NSMutableArray arrayWithCapacity:number];
CGRect ownerRect = CGRectMake((KScreenWidth - 40)/2 - ownerSize.width / 2, 0, ownerSize.width, ownerSize.height);
NSValue * ownerFrameValue = [NSValue valueWithCGRect:ownerRect];
[itemArray addObject:ownerFrameValue];
for (int i = 1; i < number; i++) {
CGPoint itemOrigin = CGPointZero;
if (i <= 4) {
itemOrigin = CGPointMake((itemSize.width + interiteSpace) * (i -1), ownerItemMaxY);
} else {
itemOrigin = CGPointMake((itemSize.width + interiteSpace) * (i-4 -1), ownerItemMaxY + itemSize.height + lineSpace);
}
CGRect itemRect = CGRectMake(itemOrigin.x, itemOrigin.y, itemSize.width, itemSize.height);
NSValue * itemRectValue = [NSValue valueWithCGRect:itemRect];
[itemArray addObject:itemRectValue];
}
return itemArray;
}
#pragma mark - Public Method
- (CGFloat)getPositionViewHeight {
CGFloat height = 0;
CGSize itemSize = [self getNormalItemSize];
CGSize ownerSize = [self getOwnerItemSize];
CGFloat lineSpace = [self getItemsLineSpace];
int numberLine =([self numberOfItems] -1)/ [self numberOfItemInLine];
height = ownerSize.height +(itemSize.height + lineSpace) * numberLine + [self getOwnerItemToNormalItemHeight];
return height;
}
#pragma mark - Private Method
///
- (CGSize)getOwnerItemSize {
return CGSizeMake(58 + 5, 58 + 12 + 6 + 5);
}
///
- (CGSize)getNormalItemSize {
CGFloat itemWidth = 55 + 5;
return CGSizeMake(itemWidth, itemWidth + 12 + 6);
}
///
- (CGFloat)getItemsLineSpace {
return 15;
}
///
- (CGFloat)getItemsInteritemSpace {
int number= [self numberOfItemInLine];
CGFloat itemWidth = (KScreenWidth - 40 - [self getNormalItemSize].width * number) / (number - 1);
return itemWidth;
}
///
- (UIEdgeInsets)getContainerEsgeInsets {
return UIEdgeInsetsMake(0, 20, 0, 20);
}
///itemitem
- (CGFloat)getOwnerItemToNormalItemHeight {
return 33;
}
///item
- (int)numberOfItemInLine {
return 4;
}
@end

View File

@@ -0,0 +1,27 @@
//
// XPRoomPositionLayoutProtocol.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol XPRoomPositionLayoutProtocol <NSObject>
///多少个item
- (int)numberOfItems;
///一列有几个item
- (int)numberOfItemInLine;
///item的class 所有的坑位的样式是相同的 如果不同的话 在做
- (Class)classOfPositionItme;
///获取所有item的布局
- (NSArray<NSValue *> *)getPositionItemsCenter;
///获取所有item的布局
- (NSArray<NSValue *> *)getPositionItemsRect;
///获取容器外部的间隙
- (UIEdgeInsets)getContainerEsgeInsets;
@end
NS_ASSUME_NONNULL_END

View File

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

View File

@@ -0,0 +1,46 @@
//
// XCRoomPostionNickView.m
// xplan-ios
//
// Created by on 2021/10/15.
//
#import "XCRoomPostionNickView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
@interface XCRoomPostionNickView ()
///
@property (nonatomic,strong) UILabel *nickLabel;
@end
@implementation XCRoomPostionNickView
- (void)initSubViews {
[super initSubViews];
[self addSubview:self.nickLabel];
}
- (void)initSubViewConstraints {
[super initSubViewConstraints];
[self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(7);
}];
}
#pragma mark - Getters And Setters
- (UILabel *)nickLabel {
if (!_nickLabel) {
_nickLabel = [[UILabel alloc] init];
_nickLabel.font = [UIFont systemFontOfSize:11];
_nickLabel.textColor = [ThemeColor mainTextColor];
_nickLabel.text = @"迷你号";
_nickLabel.textAlignment = NSTextAlignmentCenter;
}
return _nickLabel;
}
@end

View File

@@ -0,0 +1,19 @@
//
// XPRoomPostionBaseItemView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPostionBaseItemView : UIView
///头像
@property (nonatomic,strong, readonly) UIImageView *avatarImageView;
- (void)initSubViews;
- (void)initSubViewConstraints;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,51 @@
//
// XPRoomPostionBaseItemView.m
// xplan-ios
//
// Created by on 2021/10/15.
//
#import "XPRoomPostionBaseItemView.h"
///Third
#import <Masonry/Masonry.h>
@interface XPRoomPostionBaseItemView ()
///
@property (nonatomic,strong) UIImageView *avatarImageView;
@end
@implementation XPRoomPostionBaseItemView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.avatarImageView];
}
- (void)initSubViewConstraints {
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self);
make.height.mas_equalTo(self.mas_width);
}];
}
#pragma mark - Getters And Setters
- (UIImageView *)avatarImageView {
if (!_avatarImageView) {
_avatarImageView = [[UIImageView alloc] init];
_avatarImageView.userInteractionEnabled = YES;
_avatarImageView.image = [UIImage imageNamed:@"room_position_normal"];
}
return _avatarImageView;
}
@end

View File

@@ -0,0 +1,17 @@
//
// XPRoomPositionView.h
// xplan-ios
//
// Created by 冯硕 on 2021/10/15.
//
#import <UIKit/UIKit.h>
#import "XPRoomPositionLayoutProtocol.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionView : UIView
- (instancetype)initWithFrame:(CGRect)frame layout:(id<XPRoomPositionLayoutProtocol>)layout;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,43 @@
//
// XPRoomPositionView.m
// xplan-ios
//
// Created by on 2021/10/15.
//
#import "XPRoomPositionView.h"
@interface XPRoomPositionView ()
///UI
@property (nonatomic,strong) id<XPRoomPositionLayoutProtocol> layout;
@end
@implementation XPRoomPositionView
- (instancetype)initWithFrame:(CGRect)frame layout:(id<XPRoomPositionLayoutProtocol>)layout {
self = [super initWithFrame:frame];
if (self) {
self.layout = layout;
[self initSubViews];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
int number = [self.layout numberOfItems];
NSArray * array = [self.layout getPositionItemsRect];
for (int i = 0; i < number; i++) {
UIView * view = [self getItemView];
NSValue * rect = [array objectAtIndex:i];
view.frame = rect.CGRectValue;
[self addSubview:view];
}
}
#pragma mark - XPRoomPositionLayoutProtocol
- (UIView *)getItemView {
Class class = [self.layout classOfPositionItme];
return [[class alloc] init];;
}
@end

View File

@@ -9,8 +9,8 @@
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomPositionView : UIView
@interface XPRoomPositionContainView : UIView
- (CGFloat)positionContainerViewHeight;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,64 @@
//
// XPRoomPositionView.m
// xplan-ios
//
// Created by on 2021/10/11.
//
#import "XPRoomPositionContainView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "XPRoomPositionLayoutImpl.h"
///View
#import "XPRoomPositionView.h"
@interface XPRoomPositionContainView ()
///
@property (nonatomic,strong) XPRoomPositionView *postionView;
///
@property (nonatomic,strong) XPRoomPositionLayoutImpl *layoutImpl;
@end
@implementation XPRoomPositionContainView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Public Method
- (CGFloat)positionContainerViewHeight {
return [self.layoutImpl getPositionViewHeight];
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.postionView];
}
- (void)initSubViewConstraints {
[self.postionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self).inset(20);
make.top.bottom.mas_equalTo(self);
}];
}
#pragma mark - Getters And Setters
- (XPRoomPositionView *)postionView {
if (!_postionView) {
_postionView = [[XPRoomPositionView alloc] initWithFrame:CGRectZero layout:self.layoutImpl];
}
return _postionView;
}
- (XPRoomPositionLayoutImpl *)layoutImpl {
if (!_layoutImpl) {
_layoutImpl = [[XPRoomPositionLayoutImpl alloc] init];
}
return _layoutImpl;
}
@end

View File

@@ -1,31 +0,0 @@
//
// 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

@@ -68,7 +68,7 @@
[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);
make.height.mas_equalTo([self.positionManager getContainerViewHeight]);
}];
[self.messageManager.containerView mas_makeConstraints:^(MASConstraintMaker *make) {