我的模块的我的页面
@@ -93,6 +93,15 @@
|
||||
E8B825CD26EA18C8009E8E9F /* ThemeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825CC26EA18C8009E8E9F /* ThemeColor.m */; };
|
||||
E8B825D026EA3825009E8E9F /* LoginPasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825CF26EA3825009E8E9F /* LoginPasswordViewController.m */; };
|
||||
E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */; };
|
||||
E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7626F2F15100F03460 /* XPMineViewController.m */; };
|
||||
E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7926F2F16600F03460 /* XPMinePresent.m */; };
|
||||
E8E70D7E26F2F19D00F03460 /* Api+Mine.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7D26F2F19D00F03460 /* Api+Mine.m */; };
|
||||
E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */; };
|
||||
E8E70D8626F2F55C00F03460 /* XPMineAccountView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8526F2F55C00F03460 /* XPMineAccountView.m */; };
|
||||
E8E70D8926F2F58F00F03460 /* XPMineMatchTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8826F2F58F00F03460 /* XPMineMatchTableViewCell.m */; };
|
||||
E8E70D8C26F2F5A500F03460 /* XPMineMatchCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8B26F2F5A500F03460 /* XPMineMatchCollectionViewCell.m */; };
|
||||
E8E70D8F26F2F5DB00F03460 /* XPMineMenuTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8E26F2F5DB00F03460 /* XPMineMenuTableViewCell.m */; };
|
||||
E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
@@ -266,6 +275,25 @@
|
||||
E8CEA03B26EA3DE500644B44 /* LoginPasswordPresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordPresent.h; sourceTree = "<group>"; };
|
||||
E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPasswordPresent.m; sourceTree = "<group>"; };
|
||||
E8CEA03E26EA3E0200644B44 /* LoginPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordProtocol.h; sourceTree = "<group>"; };
|
||||
E8E70D7526F2F15100F03460 /* XPMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineViewController.h; sourceTree = "<group>"; };
|
||||
E8E70D7626F2F15100F03460 /* XPMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineViewController.m; sourceTree = "<group>"; };
|
||||
E8E70D7826F2F16600F03460 /* XPMinePresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePresent.h; sourceTree = "<group>"; };
|
||||
E8E70D7926F2F16600F03460 /* XPMinePresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePresent.m; sourceTree = "<group>"; };
|
||||
E8E70D7B26F2F18900F03460 /* XPMineProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineProtocol.h; sourceTree = "<group>"; };
|
||||
E8E70D7C26F2F19D00F03460 /* Api+Mine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Mine.h"; sourceTree = "<group>"; };
|
||||
E8E70D7D26F2F19D00F03460 /* Api+Mine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Mine.m"; sourceTree = "<group>"; };
|
||||
E8E70D8126F2F51A00F03460 /* XPMineHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadView.h; sourceTree = "<group>"; };
|
||||
E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadView.m; sourceTree = "<group>"; };
|
||||
E8E70D8426F2F55C00F03460 /* XPMineAccountView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAccountView.h; sourceTree = "<group>"; };
|
||||
E8E70D8526F2F55C00F03460 /* XPMineAccountView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAccountView.m; sourceTree = "<group>"; };
|
||||
E8E70D8726F2F58F00F03460 /* XPMineMatchTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineMatchTableViewCell.h; sourceTree = "<group>"; };
|
||||
E8E70D8826F2F58F00F03460 /* XPMineMatchTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMatchTableViewCell.m; sourceTree = "<group>"; };
|
||||
E8E70D8A26F2F5A500F03460 /* XPMineMatchCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineMatchCollectionViewCell.h; sourceTree = "<group>"; };
|
||||
E8E70D8B26F2F5A500F03460 /* XPMineMatchCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMatchCollectionViewCell.m; sourceTree = "<group>"; };
|
||||
E8E70D8D26F2F5DB00F03460 /* XPMineMenuTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineMenuTableViewCell.h; sourceTree = "<group>"; };
|
||||
E8E70D8E26F2F5DB00F03460 /* XPMineMenuTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMenuTableViewCell.m; sourceTree = "<group>"; };
|
||||
E8E70D9026F2F60C00F03460 /* XPMineItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineItemModel.h; sourceTree = "<group>"; };
|
||||
E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineItemModel.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -399,6 +427,7 @@
|
||||
189DD56126DE45F800AB55B1 /* Main */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D6E26F2EB1200F03460 /* Mine */,
|
||||
18E7B1B426E8B2960064BC9B /* Tabbar */,
|
||||
18E7B1FD26E8CC510064BC9B /* Match */,
|
||||
189DD56226DE460400AB55B1 /* Login */,
|
||||
@@ -732,6 +761,88 @@
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D6E26F2EB1200F03460 /* Mine */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D7026F2EB3800F03460 /* Model */,
|
||||
E8E70D6F26F2EB2A00F03460 /* Api */,
|
||||
E8E70D7126F2EB4900F03460 /* View */,
|
||||
E8E70D7226F2EB5100F03460 /* Presenter */,
|
||||
E8E70D7426F2EB6B00F03460 /* Protocol */,
|
||||
);
|
||||
path = Mine;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D6F26F2EB2A00F03460 /* Api */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D7C26F2F19D00F03460 /* Api+Mine.h */,
|
||||
E8E70D7D26F2F19D00F03460 /* Api+Mine.m */,
|
||||
);
|
||||
path = Api;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D7026F2EB3800F03460 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D9026F2F60C00F03460 /* XPMineItemModel.h */,
|
||||
E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D7126F2EB4900F03460 /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D8026F2F3C500F03460 /* Cell */,
|
||||
E8E70D7F26F2F39000F03460 /* SubViews */,
|
||||
E8E70D7526F2F15100F03460 /* XPMineViewController.h */,
|
||||
E8E70D7626F2F15100F03460 /* XPMineViewController.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D7226F2EB5100F03460 /* Presenter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D7826F2F16600F03460 /* XPMinePresent.h */,
|
||||
E8E70D7926F2F16600F03460 /* XPMinePresent.m */,
|
||||
);
|
||||
path = Presenter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D7426F2EB6B00F03460 /* Protocol */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D7B26F2F18900F03460 /* XPMineProtocol.h */,
|
||||
);
|
||||
path = Protocol;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D7F26F2F39000F03460 /* SubViews */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D8126F2F51A00F03460 /* XPMineHeadView.h */,
|
||||
E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */,
|
||||
E8E70D8426F2F55C00F03460 /* XPMineAccountView.h */,
|
||||
E8E70D8526F2F55C00F03460 /* XPMineAccountView.m */,
|
||||
);
|
||||
path = SubViews;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8E70D8026F2F3C500F03460 /* Cell */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8E70D8726F2F58F00F03460 /* XPMineMatchTableViewCell.h */,
|
||||
E8E70D8826F2F58F00F03460 /* XPMineMatchTableViewCell.m */,
|
||||
E8E70D8A26F2F5A500F03460 /* XPMineMatchCollectionViewCell.h */,
|
||||
E8E70D8B26F2F5A500F03460 /* XPMineMatchCollectionViewCell.m */,
|
||||
E8E70D8D26F2F5DB00F03460 /* XPMineMenuTableViewCell.h */,
|
||||
E8E70D8E26F2F5DB00F03460 /* XPMineMenuTableViewCell.m */,
|
||||
);
|
||||
path = Cell;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -864,6 +975,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E81366F826F0C12A0076364C /* LoginFullInfoProtocol.h in Sources */,
|
||||
E8E70D7E26F2F19D00F03460 /* Api+Mine.m in Sources */,
|
||||
E81C27A226EF23490031E639 /* XPEnum.h in Sources */,
|
||||
E81C279826EB3AC40031E639 /* LoginForgetPasswordProtocol.h in Sources */,
|
||||
E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */,
|
||||
@@ -872,16 +984,20 @@
|
||||
189DD76226E60DDC00AB55B1 /* Api+Login.m in Sources */,
|
||||
18E7B22626E8CDCF0064BC9B /* XplanFlutterBoostDelegate.m in Sources */,
|
||||
189DD73E26E21C3F00AB55B1 /* YYUtility.m in Sources */,
|
||||
E8E70D8926F2F58F00F03460 /* XPMineMatchTableViewCell.m in Sources */,
|
||||
E81C279626EB39CC0031E639 /* LoginForgetPasswordPresent.m in Sources */,
|
||||
E8B825B726E9A7D8009E8E9F /* BaseObject.m in Sources */,
|
||||
189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */,
|
||||
E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */,
|
||||
E81C27AB26EF2D920031E639 /* ThirdUserInfo.m in Sources */,
|
||||
E81C279D26EEEC620031E639 /* XPConstant.m in Sources */,
|
||||
187EEEFE26E8A82C002833B2 /* NSObject+AutoCoding.m in Sources */,
|
||||
189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */,
|
||||
189DD6FF26E20E5900AB55B1 /* HttpRequestHelper.m in Sources */,
|
||||
E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */,
|
||||
189DD74A26E21D8400AB55B1 /* SSKeychain.m in Sources */,
|
||||
E81C27AE26EF39AB0031E639 /* AppDelegate+ThirdConfig.m in Sources */,
|
||||
E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */,
|
||||
E8B825D026EA3825009E8E9F /* LoginPasswordViewController.m in Sources */,
|
||||
18E7B31826F097E00064BC9B /* UserInfoModel.m in Sources */,
|
||||
18E7B32126F098650064BC9B /* UserInfoSkillVo.m in Sources */,
|
||||
@@ -891,6 +1007,7 @@
|
||||
18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */,
|
||||
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */,
|
||||
189DD54B26DE338800AB55B1 /* BaseViewController.m in Sources */,
|
||||
E8E70D8626F2F55C00F03460 /* XPMineAccountView.m in Sources */,
|
||||
E81C279026EB314D0031E639 /* LoginForgetEditView.m in Sources */,
|
||||
E81C27A026EEF83D0031E639 /* XPHtmlUrl.m in Sources */,
|
||||
18E7B1B726E8B2D10064BC9B /* Api+Main.m in Sources */,
|
||||
@@ -902,7 +1019,9 @@
|
||||
18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */,
|
||||
E8B825CD26EA18C8009E8E9F /* ThemeColor.m in Sources */,
|
||||
E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */,
|
||||
E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */,
|
||||
189DD52E26DE255300AB55B1 /* AppDelegate.m in Sources */,
|
||||
E8E70D8C26F2F5A500F03460 /* XPMineMatchCollectionViewCell.m in Sources */,
|
||||
E81C279326EB394D0031E639 /* LoginForgetPasswordViewController.m in Sources */,
|
||||
E81C278D26EAFAF60031E639 /* DESEncrypt.m in Sources */,
|
||||
E81366E726F0A49E0076364C /* NSString+Regex.m in Sources */,
|
||||
@@ -919,6 +1038,7 @@
|
||||
189DD74026E21C3F00AB55B1 /* YYUtility+App.m in Sources */,
|
||||
189DD74526E21CCC00AB55B1 /* YYReachability.m in Sources */,
|
||||
E82109AD26F1C8A000FC3319 /* CountDownHelper.m in Sources */,
|
||||
E8E70D8F26F2F5DB00F03460 /* XPMineMenuTableViewCell.m in Sources */,
|
||||
187EEEE126E89BFB002833B2 /* AccountModel.m in Sources */,
|
||||
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
|
||||
E872308926E89BE000B90D4F /* LoginPhoneViewController.m in Sources */,
|
||||
|
22
xplan-ios/Assets.xcassets/Common/common_female.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_female@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_female@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Common/common_female.imageset/common_female@2x.png
vendored
Normal file
After Width: | Height: | Size: 561 B |
BIN
xplan-ios/Assets.xcassets/Common/common_female.imageset/common_female@3x.png
vendored
Normal file
After Width: | Height: | Size: 816 B |
22
xplan-ios/Assets.xcassets/Common/common_male.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_male@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_male@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Common/common_male.imageset/common_male@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
xplan-ios/Assets.xcassets/Common/common_male.imageset/common_male@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.8 KiB |
6
xplan-ios/Assets.xcassets/Mine/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
22
xplan-ios/Assets.xcassets/Mine/mine_head_account_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_account_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_account_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_account_bg.imageset/mine_head_account_bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_account_bg.imageset/mine_head_account_bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 16 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_head_free_ticket.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_free_ticket@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_free_ticket@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_free_ticket.imageset/mine_head_free_ticket@2x.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_free_ticket.imageset/mine_head_free_ticket@3x.png
vendored
Normal file
After Width: | Height: | Size: 4.2 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_head_name_edit.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_name_edit@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_name_edit@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_name_edit.imageset/mine_head_name_edit@2x.png
vendored
Normal file
After Width: | Height: | Size: 639 B |
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_name_edit.imageset/mine_head_name_edit@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_head_recommend_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_recommend_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_head_recommend_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_recommend_bg.imageset/mine_head_recommend_bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_head_recommend_bg.imageset/mine_head_recommend_bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_item_arrow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_item_arrow@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_item_arrow@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_item_arrow.imageset/mine_item_arrow@2x.png
vendored
Normal file
After Width: | Height: | Size: 149 B |
BIN
xplan-ios/Assets.xcassets/Mine/mine_item_arrow.imageset/mine_item_arrow@3x.png
vendored
Normal file
After Width: | Height: | Size: 262 B |
22
xplan-ios/Assets.xcassets/Mine/mine_match_apply_record.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_apply_record@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_apply_record@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_apply_record.imageset/mine_match_apply_record@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_apply_record.imageset/mine_match_apply_record@3x.png
vendored
Normal file
After Width: | Height: | Size: 3.0 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_match_card_bag.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_card_bag@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_card_bag@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_card_bag.imageset/mine_match_card_bag@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_card_bag.imageset/mine_match_card_bag@3x.png
vendored
Normal file
After Width: | Height: | Size: 3.0 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_match_relevance_account.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_relevance_account@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_relevance_account@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.5 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_match_shopping.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_shopping@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_shopping@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_shopping.imageset/mine_match_shopping@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_shopping.imageset/mine_match_shopping@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.8 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_match_standings.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_standings@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_match_standings@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_standings.imageset/mine_match_standings@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
xplan-ios/Assets.xcassets/Mine/mine_match_standings.imageset/mine_match_standings@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.6 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_nav_setting.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_nav_setting@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_nav_setting@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_nav_setting.imageset/mine_nav_setting@2x.png
vendored
Normal file
After Width: | Height: | Size: 430 B |
BIN
xplan-ios/Assets.xcassets/Mine/mine_nav_setting.imageset/mine_nav_setting@3x.png
vendored
Normal file
After Width: | Height: | Size: 750 B |
22
xplan-ios/Assets.xcassets/Mine/mine_normal_real_name_authentic.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_normal_real_name_authentic@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_normal_real_name_authentic@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 791 B |
After Width: | Height: | Size: 1.3 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_normal_teenager.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_normal_teenager@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_normal_teenager@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/mine_normal_teenager.imageset/mine_normal_teenager@2x.png
vendored
Normal file
After Width: | Height: | Size: 809 B |
BIN
xplan-ios/Assets.xcassets/Mine/mine_normal_teenager.imageset/mine_normal_teenager@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.3 KiB |
@@ -20,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
*/
|
||||
+ (void)makeRequest:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ...;
|
||||
|
||||
+ (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -36,4 +36,8 @@
|
||||
[HttpRequestHelper request:route method:method params:params completion:completion];
|
||||
}
|
||||
|
||||
+ (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid {
|
||||
[self makeRequest:@"user/get" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -11,6 +11,10 @@
|
||||
#import "UserInfoSkillVo.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef NS_ENUM(NSInteger, GenderType) {
|
||||
GenderType_Male = 1,///男性
|
||||
GenderType_Female = 2,///女性
|
||||
};
|
||||
|
||||
@interface UserInfoModel : BaseObject
|
||||
@property (nonatomic , assign) NSInteger bindType;
|
||||
@@ -29,7 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic , assign) BOOL isBindBankCard;
|
||||
@property (nonatomic , assign) BOOL hasRegPacket;
|
||||
@property (nonatomic , assign) BOOL isCertified;
|
||||
@property (nonatomic , assign) NSInteger gender;
|
||||
@property (nonatomic , assign) GenderType gender;
|
||||
@property (nonatomic , assign) NSInteger platformRole;
|
||||
@property (nonatomic , assign) NSInteger uid;
|
||||
@property (nonatomic , assign) NSInteger defUser;
|
||||
|
@@ -25,6 +25,8 @@ typedef void(^HttpFail)(NSInteger code, NSString * _Nullable msg);
|
||||
- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail errorToast:(BOOL)toast;
|
||||
- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail showLoading:(BOOL)loading errorToast:(BOOL)toast;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
16
xplan-ios/Main/Mine/Api/Api+Mine.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Api+Mine.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "Api.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface Api (Mine)
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
12
xplan-ios/Main/Mine/Api/Api+Mine.m
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// Api+Mine.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "Api+Mine.h"
|
||||
|
||||
@implementation Api (Mine)
|
||||
|
||||
@end
|
37
xplan-ios/Main/Mine/Model/XPMineItemModel.h
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// XPMineItemModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef NS_ENUM(NSInteger, XPMineItemType) {
|
||||
XPMineItemType_Match_Apply_Record, ///报名记录
|
||||
XPMineItemType_Match_Bonus,///奖金
|
||||
XPMineItemType_Match_Standings, ///战绩
|
||||
XPMineItemType_Match_Card_Bag, ///卡包
|
||||
XPMineItemType_Match_Shopping, ///商城
|
||||
XPMineItemType_Match_Relevance_Account, ///关联账号
|
||||
XPMineItemType_My_Room, ///我的房间
|
||||
XPMineItemType_Collect_Room, ///收藏房间
|
||||
XPMineItemType_My_Level,///我的等级
|
||||
XPMineItemType_Teenager_Mode, ///青少年模式
|
||||
XPMineItemType_Real_Name_Authentic,///实名认证
|
||||
};
|
||||
|
||||
|
||||
@interface XPMineItemModel : NSObject
|
||||
///图片的名字
|
||||
@property (nonatomic,copy) NSString *itmeImageName;
|
||||
///名字
|
||||
@property (nonatomic,copy) NSString *itmeName;
|
||||
///跳转类型
|
||||
@property (nonatomic,assign) XPMineItemType type;
|
||||
///圆角
|
||||
@property (nonatomic, assign) UIRectCorner cornerType;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
12
xplan-ios/Main/Mine/Model/XPMineItemModel.m
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// XPMineItemModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineItemModel.h"
|
||||
|
||||
@implementation XPMineItemModel
|
||||
|
||||
@end
|
24
xplan-ios/Main/Mine/Presenter/XPMinePresent.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// XPMinePresent.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMinePresent : BaseMvpPresenter
|
||||
|
||||
/// 获取赛事模块的items
|
||||
- (void)getMatchItems;
|
||||
|
||||
/// 获取普通的items
|
||||
- (void)getNormalItems;
|
||||
|
||||
/// 获取用户信息
|
||||
- (void)getUserInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
84
xplan-ios/Main/Mine/Presenter/XPMinePresent.m
Normal file
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// XPMinePresent.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMinePresent.h"
|
||||
///Tool
|
||||
#import "AccountInfoStorage.h"
|
||||
///Api
|
||||
#import "Api+Mine.h"
|
||||
///Model
|
||||
#import "XPMineItemModel.h"
|
||||
#import "UserInfoModel.h"
|
||||
///Protocol
|
||||
#import "XPMineProtocol.h"
|
||||
@implementation XPMinePresent
|
||||
|
||||
- (id<XPMineProtocol>)getView {
|
||||
return ((id<XPMineProtocol>) [super getView]);
|
||||
}
|
||||
|
||||
///获取赛事的items
|
||||
- (void)getMatchItems {
|
||||
XPMineItemModel * applyRecordItem = [[XPMineItemModel alloc] init];
|
||||
applyRecordItem.itmeName = @"报名记录";
|
||||
applyRecordItem.itmeImageName = @"mine_match_apply_record";
|
||||
applyRecordItem.type = XPMineItemType_Match_Apply_Record;
|
||||
|
||||
XPMineItemModel * standingsItem = [[XPMineItemModel alloc] init];
|
||||
standingsItem.itmeName = @"战绩";
|
||||
standingsItem.itmeImageName = @"mine_match_standings";
|
||||
standingsItem.type = XPMineItemType_Match_Standings;
|
||||
|
||||
XPMineItemModel * cardBagItem = [[XPMineItemModel alloc] init];
|
||||
cardBagItem.itmeName = @"卡包";
|
||||
cardBagItem.itmeImageName = @"mine_match_card_bag";
|
||||
cardBagItem.type = XPMineItemType_Match_Card_Bag;
|
||||
|
||||
XPMineItemModel * shoppingItem = [[XPMineItemModel alloc] init];
|
||||
shoppingItem.itmeName = @"商城";
|
||||
shoppingItem.itmeImageName = @"mine_match_shopping";
|
||||
shoppingItem.type = XPMineItemType_Match_Shopping;
|
||||
|
||||
XPMineItemModel * relevanceItem = [[XPMineItemModel alloc] init];
|
||||
relevanceItem.itmeName = @"关联账号";
|
||||
relevanceItem.itmeImageName = @"mine_match_relevance_account";
|
||||
relevanceItem.type = XPMineItemType_Match_Relevance_Account;
|
||||
NSArray * array = @[applyRecordItem, standingsItem, cardBagItem, shoppingItem, relevanceItem];
|
||||
[[self getView] onGetMatchItemsSuccess:array];
|
||||
}
|
||||
|
||||
|
||||
/// 获取普通的items
|
||||
- (void)getNormalItems {
|
||||
XPMineItemModel * teenagerItem = [[XPMineItemModel alloc] init];
|
||||
teenagerItem.itmeName = @"青少年模式";
|
||||
teenagerItem.itmeImageName = @"mine_normal_teenager";
|
||||
teenagerItem.type = XPMineItemType_Match_Shopping;
|
||||
teenagerItem.cornerType = UIRectCornerTopLeft | UIRectCornerTopRight;
|
||||
|
||||
XPMineItemModel * realNameItem = [[XPMineItemModel alloc] init];
|
||||
realNameItem.itmeName = @"使命认证";
|
||||
realNameItem.itmeImageName = @"mine_normal_real_name_authentic";
|
||||
realNameItem.type = XPMineItemType_Match_Relevance_Account;
|
||||
realNameItem.cornerType = UIRectCornerBottomLeft | UIRectCornerBottomRight;
|
||||
NSArray * array = @[teenagerItem, realNameItem];
|
||||
[[self getView] onGetNormalItemsSuccess:array];
|
||||
}
|
||||
|
||||
|
||||
/// 获取用户信息
|
||||
- (void)getUserInfo {
|
||||
NSString * uid = [[AccountInfoStorage instance] getUid];
|
||||
[Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data];
|
||||
[[self getView] onGetUserInfoSuccess:infoModel];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
|
||||
}] uid:uid];
|
||||
}
|
||||
|
||||
@end
|
24
xplan-ios/Main/Mine/Protocol/XPMineProtocol.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// XPMineProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class XPMineItemModel, UserInfoModel;
|
||||
@protocol XPMineProtocol <NSObject>
|
||||
|
||||
/// 获取赛事模块的items
|
||||
/// @param matchItems 数据源
|
||||
- (void)onGetMatchItemsSuccess:(NSArray<XPMineItemModel *> *)matchItems;
|
||||
/// 获取普通的选项
|
||||
/// @param matchItems 数据源
|
||||
- (void)onGetNormalItemsSuccess:(NSArray<XPMineItemModel *> *)matchItems;
|
||||
///获取用户信息成功
|
||||
- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// XPMineMatchCollectionViewCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class XPMineItemModel;
|
||||
@interface XPMineMatchCollectionViewCell : UICollectionViewCell
|
||||
///
|
||||
@property (nonatomic,strong) XPMineItemModel *itemModel;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// XPMineMatchCollectionViewCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineMatchCollectionViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
///Model
|
||||
#import "XPMineItemModel.h"
|
||||
|
||||
@interface XPMineMatchCollectionViewCell ()
|
||||
///显示图片
|
||||
@property (nonatomic,strong) UIImageView *logoImageView;
|
||||
///显示名字
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPMineMatchCollectionViewCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.contentView addSubview:self.logoImageView];
|
||||
[self.contentView addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(40, 40));
|
||||
make.centerX.top.mas_equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(5);
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setItemModel:(XPMineItemModel *)itemModel {
|
||||
_itemModel = itemModel;
|
||||
if (_itemModel) {
|
||||
self.logoImageView.image = [UIImage imageNamed:_itemModel.itmeImageName];
|
||||
self.titleLabel.text = _itemModel.itmeName;
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImageView *)logoImageView {
|
||||
if (!_logoImageView) {
|
||||
_logoImageView = [[UIImageView alloc] init];
|
||||
_logoImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _logoImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont systemFontOfSize:13];
|
||||
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_titleLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
@end
|
26
xplan-ios/Main/Mine/View/Cell/XPMineMatchTableViewCell.h
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// XPMineMatchTableViewCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class XPMineItemModel, XPMineMatchTableViewCell;
|
||||
@protocol XPMineMatchTableViewCellDelegate <NSObject>
|
||||
|
||||
///选择了某个item
|
||||
- (void)xPMineMatchTableViewCell:(XPMineMatchTableViewCell *)cell didSelectItem:(XPMineItemModel *)item;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPMineMatchTableViewCell : UITableViewCell
|
||||
///数据
|
||||
@property (nonatomic,strong) NSArray<XPMineItemModel *> *datasource;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPMineMatchTableViewCellDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
101
xplan-ios/Main/Mine/View/Cell/XPMineMatchTableViewCell.m
Normal file
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// XPMineMatchTableViewCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineMatchTableViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///View
|
||||
#import "XPMineMatchCollectionViewCell.h"
|
||||
|
||||
@interface XPMineMatchTableViewCell ()<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
|
||||
///列表
|
||||
@property (nonatomic,strong) UICollectionView *collectionView;
|
||||
@end
|
||||
|
||||
@implementation XPMineMatchTableViewCell
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.collectionView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.bottom.mas_equalTo(self.contentView);
|
||||
make.left.right.mas_equalTo(self.contentView).inset(15);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - UICollectionViewDatasource And UICollectionViewDelegate
|
||||
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
||||
return self.datasource.count;
|
||||
}
|
||||
|
||||
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
XPMineMatchCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineMatchCollectionViewCell class]) forIndexPath:indexPath];
|
||||
XPMineItemModel * item = [self.datasource objectAtIndex:indexPath.row];
|
||||
cell.itemModel = item;
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[collectionView deselectItemAtIndexPath:indexPath animated:YES];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineMatchTableViewCell:didSelectItem:)]) {
|
||||
XPMineItemModel * model = [self.datasource objectAtIndex:indexPath.row];
|
||||
[self.delegate xPMineMatchTableViewCell:self didSelectItem:model];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - UICollectionViewFlowlayout
|
||||
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
|
||||
return UIEdgeInsetsMake(15, 22, 24, 22);
|
||||
}
|
||||
|
||||
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
|
||||
return 24;
|
||||
}
|
||||
|
||||
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return CGSizeMake(60, 60);
|
||||
}
|
||||
|
||||
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
|
||||
return (KScreenWidth - 60 * 3 - 22 * 2 - 15 * 2) / 2;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setDatasource:(NSArray<XPMineItemModel *> *)datasource {
|
||||
_datasource = datasource;
|
||||
[self.collectionView reloadData];
|
||||
}
|
||||
|
||||
- (UICollectionView *)collectionView{
|
||||
if (!_collectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_collectionView.dataSource = self;
|
||||
_collectionView.delegate = self;
|
||||
_collectionView.backgroundColor = [ThemeColor appCellBackgroundColor];
|
||||
[_collectionView registerClass:[XPMineMatchCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineMatchCollectionViewCell class])];
|
||||
_collectionView.layer.masksToBounds = YES;
|
||||
_collectionView.layer.cornerRadius = 10;
|
||||
}
|
||||
return _collectionView;
|
||||
}
|
||||
|
||||
@end
|
17
xplan-ios/Main/Mine/View/Cell/XPMineMenuTableViewCell.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// XPMineMenuTableViewCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class XPMineItemModel;
|
||||
@interface XPMineMenuTableViewCell : UITableViewCell
|
||||
///
|
||||
@property (nonatomic,strong) XPMineItemModel *itemModel;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
154
xplan-ios/Main/Mine/View/Cell/XPMineMenuTableViewCell.m
Normal file
@@ -0,0 +1,154 @@
|
||||
//
|
||||
// XPMineMenuTableViewCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineMenuTableViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "XPMineItemModel.h"
|
||||
|
||||
@interface XPMineMenuTableViewCell ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIView * backView;
|
||||
///
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///显示图片
|
||||
@property (nonatomic,strong) UIImageView *logoImageView;
|
||||
///显示名字
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///箭头
|
||||
@property (nonatomic,strong) UIButton *arrowButton;
|
||||
///分割线
|
||||
@property (nonatomic,strong) UIView * partLineView;
|
||||
@end
|
||||
|
||||
@implementation XPMineMenuTableViewCell
|
||||
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.backView];
|
||||
|
||||
[self.backView addSubview:self.stackView];
|
||||
[self.backView addSubview:self.partLineView];
|
||||
|
||||
[self.stackView addArrangedSubview:self.logoImageView];
|
||||
[self.stackView addArrangedSubview:self.titleLabel];
|
||||
[self.stackView addArrangedSubview:self.arrowButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.bottom.mas_equalTo(self.contentView);
|
||||
make.right.left.mas_equalTo(self.contentView).inset(15);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.bottom.mas_equalTo(self.backView);
|
||||
make.right.left.mas_equalTo(self.backView).inset(15);
|
||||
}];
|
||||
|
||||
[self.partLineView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.stackView);
|
||||
make.bottom.mas_equalTo(self.backView);
|
||||
make.height.mas_equalTo(1);
|
||||
}];
|
||||
|
||||
[self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(24, 24));
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)applyRoundCorners:(UIRectCorner)corners radius:(CGFloat)radius
|
||||
{
|
||||
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 30 , 53) byRoundingCorners:corners cornerRadii:CGSizeMake(radius, radius)];
|
||||
CAShapeLayer *maskLayer = [CAShapeLayer layer];
|
||||
maskLayer.path = path.CGPath;
|
||||
self.backView.layer.mask = maskLayer;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setItemModel:(XPMineItemModel *)itemModel {
|
||||
_itemModel = itemModel;
|
||||
if (_itemModel) {
|
||||
self.logoImageView.image = [UIImage imageNamed:_itemModel.itmeImageName];
|
||||
self.titleLabel.text = _itemModel.itmeName;
|
||||
if (itemModel.cornerType) {
|
||||
[self applyRoundCorners:itemModel.cornerType radius:10];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (UIView *)backView {
|
||||
if (!_backView) {
|
||||
_backView = [[UIView alloc] init];
|
||||
_backView.backgroundColor = [ThemeColor appCellBackgroundColor];;
|
||||
}
|
||||
return _backView;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.alignment = UIStackViewAlignmentCenter;
|
||||
_stackView.spacing = 10;
|
||||
_stackView.backgroundColor = [ThemeColor appCellBackgroundColor];
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UIImageView *)logoImageView {
|
||||
if (!_logoImageView) {
|
||||
_logoImageView = [[UIImageView alloc] init];
|
||||
_logoImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _logoImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont systemFontOfSize:13];
|
||||
_titleLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
- (UIButton *)arrowButton {
|
||||
if (!_arrowButton) {
|
||||
_arrowButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_arrowButton setImage:[UIImage imageNamed:@"mine_item_arrow"] forState:UIControlStateNormal];
|
||||
[_arrowButton setImage:[UIImage imageNamed:@"mine_item_arrow"] forState:UIControlStateSelected];
|
||||
[_arrowButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
|
||||
}
|
||||
return _arrowButton;
|
||||
}
|
||||
|
||||
- (UIView *)partLineView {
|
||||
if (!_partLineView) {
|
||||
_partLineView = [[UIView alloc] init];
|
||||
_partLineView.backgroundColor = [ThemeColor dividerColor];
|
||||
}
|
||||
return _partLineView;
|
||||
}
|
||||
|
||||
@end
|
16
xplan-ios/Main/Mine/View/SubViews/XPMineAccountView.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineAccountView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineAccountView : UIView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
157
xplan-ios/Main/Mine/View/SubViews/XPMineAccountView.m
Normal file
@@ -0,0 +1,157 @@
|
||||
//
|
||||
// XPMineAccountView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
// 我的账户 推荐给好友
|
||||
|
||||
#import "XPMineAccountView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "UIImage+Utils.h"
|
||||
|
||||
@interface XPMineAccountSubView: UIView
|
||||
///显示名字
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///背景图
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///免费门票
|
||||
@property (nonatomic,strong) UIButton *freeTicketButton;
|
||||
@end
|
||||
|
||||
|
||||
@implementation XPMineAccountSubView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.backImageView];
|
||||
[self addSubview:self.titleLabel];
|
||||
[self addSubview:self.freeTicketButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.backImageView).offset(18);
|
||||
make.left.mas_equalTo(self.backImageView).offset(16);
|
||||
make.right.mas_lessThanOrEqualTo(self.backImageView);
|
||||
}];
|
||||
|
||||
[self.freeTicketButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.top.mas_equalTo(self.backImageView);
|
||||
}];
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.layer.masksToBounds = YES;
|
||||
_backImageView.layer.cornerRadius = 10;
|
||||
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:16];
|
||||
_titleLabel.textColor = [ThemeColor mainTextColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
- (UIButton *)freeTicketButton {
|
||||
if (!_freeTicketButton) {
|
||||
_freeTicketButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_freeTicketButton setBackgroundImage:[UIImage imageNamed:@"mine_head_free_ticket"] forState:UIControlStateNormal];
|
||||
}
|
||||
return _freeTicketButton;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@interface XPMineAccountView ()
|
||||
///容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///我的账户
|
||||
@property (nonatomic,strong) XPMineAccountSubView *accountView;
|
||||
///推荐好友
|
||||
@property (nonatomic,strong) XPMineAccountSubView *recommendView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPMineAccountView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.stackView];
|
||||
|
||||
[self.stackView addArrangedSubview:self.accountView];
|
||||
[self.stackView addArrangedSubview:self.recommendView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self).inset(15);
|
||||
make.top.bottom.mas_equalTo(self);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFillEqually;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 15;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (XPMineAccountSubView *)accountView {
|
||||
if (!_accountView) {
|
||||
_accountView = [[XPMineAccountSubView alloc] init];
|
||||
_accountView.backImageView.image = [UIImage imageNamed:@"mine_head_account_bg"];
|
||||
_accountView.titleLabel.text = @"我的账户";
|
||||
_accountView.freeTicketButton.hidden = YES;
|
||||
}
|
||||
return _accountView;
|
||||
}
|
||||
|
||||
- (XPMineAccountSubView *)recommendView {
|
||||
if (!_recommendView) {
|
||||
_recommendView = [[XPMineAccountSubView alloc] init];
|
||||
_recommendView.backImageView.image = [UIImage imageNamed:@"mine_head_recommend_bg"];
|
||||
_recommendView.titleLabel.text = @"推荐给好友";
|
||||
}
|
||||
return _recommendView;
|
||||
}
|
||||
|
||||
@end
|
24
xplan-ios/Main/Mine/View/SubViews/XPMineHeadView.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// XPMineHeadView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class UserInfoModel,XPMineHeadView;
|
||||
@protocol XPMineHeadViewDelegate <NSObject>
|
||||
///点击了头像
|
||||
- (void)xPMineHeadView:(XPMineHeadView *)view didClickAvatar:(UserInfoModel *)info;
|
||||
|
||||
@end
|
||||
@interface XPMineHeadView : UIView
|
||||
///用户信息
|
||||
@property (nonatomic,strong) UserInfoModel *userInfo;
|
||||
///代理
|
||||
@property (nonatomic,assign) id<XPMineHeadViewDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
206
xplan-ios/Main/Mine/View/SubViews/XPMineHeadView.m
Normal file
@@ -0,0 +1,206 @@
|
||||
//
|
||||
// XPMineHeadView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineHeadView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <YYText/YYLabel.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///View
|
||||
#import "XPMineAccountView.h"
|
||||
///Model
|
||||
#import "UserInfoModel.h"
|
||||
|
||||
@interface XPMineHeadView ()
|
||||
///头像
|
||||
@property (nonatomic,strong) UIImageView * avatarImageView;
|
||||
///name的容器
|
||||
@property (nonatomic,strong) UIStackView *nameStackView;
|
||||
///名字
|
||||
@property (nonatomic,strong) UILabel *nameLabel;
|
||||
///编辑
|
||||
@property (nonatomic,strong) UIButton *editButton;
|
||||
///id 的容器
|
||||
@property (nonatomic,strong) UIStackView *idStackView;
|
||||
///id
|
||||
@property (nonatomic,strong) UILabel *idLabel;
|
||||
///性别
|
||||
@property (nonatomic,strong) UIImageView *sexImageView;
|
||||
///显示等级
|
||||
@property (nonatomic,strong) YYLabel *levelLabel;
|
||||
///我的账户 推荐给好友
|
||||
@property (nonatomic,strong) XPMineAccountView *accountView;
|
||||
@end
|
||||
|
||||
@implementation XPMineHeadView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Response
|
||||
- (void)tapAvatarImageView {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineHeadView:didClickAvatar:)]) {
|
||||
[self.delegate xPMineHeadView:self didClickAvatar:self.userInfo];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self addSubview:self.avatarImageView];
|
||||
[self addSubview:self.nameStackView];
|
||||
[self addSubview:self.idStackView];
|
||||
[self addSubview:self.levelLabel];
|
||||
[self addSubview:self.accountView];
|
||||
|
||||
[self.nameStackView addArrangedSubview:self.nameLabel];
|
||||
[self.nameStackView addArrangedSubview:self.editButton];
|
||||
[self.idStackView addArrangedSubview:self.idLabel];
|
||||
[self.idStackView addArrangedSubview:self.sexImageView];
|
||||
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvatarImageView)];
|
||||
[self.avatarImageView addGestureRecognizer:tap];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(50, 50));
|
||||
make.left.mas_equalTo(self).offset(20);
|
||||
make.top.mas_equalTo(self).offset(50 + kSafeAreaTopHeight);
|
||||
}];
|
||||
|
||||
[self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(17);
|
||||
make.top.mas_equalTo(self.avatarImageView).offset(8);
|
||||
}];
|
||||
|
||||
[self.idStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.nameStackView);
|
||||
make.top.mas_equalTo(self.nameStackView.mas_bottom).offset(6);
|
||||
}];
|
||||
|
||||
[self.levelLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.nameStackView);
|
||||
make.top.mas_equalTo(self.idStackView.mas_bottom).offset(4);
|
||||
}];
|
||||
|
||||
[self.accountView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self);
|
||||
make.height.mas_equalTo(60);
|
||||
make.top.mas_equalTo(self.levelLabel.mas_bottom).offset(16);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setUserInfo:(UserInfoModel *)userInfo {
|
||||
_userInfo = userInfo;
|
||||
if (_userInfo) {
|
||||
self.idLabel.text = [NSString stringWithFormat:@"音游号:%ld", (long)_userInfo.erbanNo];
|
||||
self.nameLabel.text = _userInfo.nick.length > 0 ? _userInfo.nick : @"";
|
||||
NSString * sexName;
|
||||
if (userInfo.gender == GenderType_Male) {
|
||||
sexName = @"";
|
||||
} else {
|
||||
sexName = @"";
|
||||
}
|
||||
self.sexImageView.image = [UIImage imageNamed:sexName];
|
||||
}
|
||||
}
|
||||
- (UIImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
_avatarImageView = [[UIImageView alloc] init];
|
||||
_avatarImageView.userInteractionEnabled = YES;
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 25;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
- (UIStackView *)nameStackView {
|
||||
if (!_nameStackView) {
|
||||
_nameStackView = [[UIStackView alloc] init];
|
||||
_nameStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_nameStackView.distribution = UIStackViewDistributionFill;
|
||||
_nameStackView.alignment = UIStackViewAlignmentCenter;
|
||||
_nameStackView.spacing = 5;
|
||||
}
|
||||
return _nameStackView;
|
||||
}
|
||||
|
||||
- (UILabel *)nameLabel {
|
||||
if (!_nameLabel) {
|
||||
_nameLabel = [[UILabel alloc] init];
|
||||
_nameLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18];
|
||||
_nameLabel.textColor = [ThemeColor mainTextColor];
|
||||
}
|
||||
return _nameLabel;
|
||||
}
|
||||
|
||||
- (UIButton *)editButton {
|
||||
if (!_editButton) {
|
||||
_editButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_editButton setImage:[UIImage imageNamed:@"mine_head_name_edit"] forState:UIControlStateNormal];
|
||||
[_editButton setImage:[UIImage imageNamed:@"mine_head_name_edit"] forState:UIControlStateSelected];
|
||||
}
|
||||
return _editButton;
|
||||
}
|
||||
|
||||
|
||||
- (UIStackView *)idStackView {
|
||||
if (!_idStackView) {
|
||||
_idStackView = [[UIStackView alloc] init];
|
||||
_idStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_idStackView.distribution = UIStackViewDistributionFill;
|
||||
_idStackView.alignment = UIStackViewAlignmentCenter;
|
||||
_idStackView.spacing = 5;
|
||||
}
|
||||
return _idStackView;
|
||||
}
|
||||
|
||||
- (UILabel *)idLabel {
|
||||
if (!_idLabel) {
|
||||
_idLabel = [[UILabel alloc] init];
|
||||
_idLabel.font = [UIFont systemFontOfSize:13];
|
||||
_idLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _idLabel;
|
||||
}
|
||||
|
||||
- (UIImageView *)sexImageView {
|
||||
if (!_sexImageView) {
|
||||
_sexImageView = [[UIImageView alloc] init];
|
||||
_sexImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _sexImageView;
|
||||
}
|
||||
|
||||
- (YYLabel *)levelLabel {
|
||||
if (!_levelLabel) {
|
||||
_levelLabel = [[YYLabel alloc] init];
|
||||
_levelLabel.preferredMaxLayoutWidth = KScreenWidth - 88;
|
||||
}
|
||||
return _levelLabel;
|
||||
}
|
||||
|
||||
- (XPMineAccountView *)accountView {
|
||||
if (!_accountView) {
|
||||
_accountView = [[XPMineAccountView alloc] init];
|
||||
}
|
||||
return _accountView;
|
||||
}
|
||||
|
||||
|
||||
@end
|
16
xplan-ios/Main/Mine/View/XPMineViewController.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineViewController : MvpViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
229
xplan-ios/Main/Mine/View/XPMineViewController.m
Normal file
@@ -0,0 +1,229 @@
|
||||
//
|
||||
// XPMineViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/16.
|
||||
//
|
||||
|
||||
#import "XPMineViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "XPMineItemModel.h"
|
||||
///P
|
||||
#import "XPMineProtocol.h"
|
||||
#import "XPMinePresent.h"
|
||||
///View
|
||||
#import "XPMineMenuTableViewCell.h"
|
||||
#import "XPMineMatchTableViewCell.h"
|
||||
#import "XPMineHeadView.h"
|
||||
|
||||
@interface XPMineViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineProtocol, XPMineMatchTableViewCellDelegate, XPMineHeadViewDelegate>
|
||||
///
|
||||
@property (nonatomic,strong) UITableView *tableView;
|
||||
///数据源
|
||||
@property (nonatomic,strong) NSArray<XPMineItemModel *> *datasource;
|
||||
///赛事模块的
|
||||
@property (nonatomic,strong) NSArray<XPMineItemModel *> *matchItemArray;
|
||||
///头部
|
||||
@property (nonatomic,strong) XPMineHeadView *headView;
|
||||
///设置
|
||||
@property (nonatomic,strong) UIButton *settingButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPMineViewController
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (XPMinePresent *)createPresenter {
|
||||
return [[XPMinePresent alloc] init];;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[self.presenter getUserInfo];
|
||||
}
|
||||
|
||||
#pragma mark - Response
|
||||
- (void)settingButtonAction:(UIButton *)sender {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.view addSubview:self.tableView];
|
||||
[self.view addSubview:self.settingButton];
|
||||
self.tableView.tableHeaderView = self.headView;
|
||||
[self.presenter getMatchItems];
|
||||
[self.presenter getNormalItems];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(18, 18));
|
||||
make.right.mas_equalTo(self.view).offset(-14);
|
||||
make.top.mas_equalTo(self.view).offset(kSafeAreaTopHeight + 29);
|
||||
}];
|
||||
|
||||
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.view);
|
||||
make.left.right.bottom.mas_equalTo(self.view);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)pushViewControllerWithType:(XPMineItemType)type {
|
||||
switch (type) {
|
||||
case XPMineItemType_Match_Apply_Record:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Match_Standings:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Match_Card_Bag:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Match_Shopping:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Match_Relevance_Account:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Teenager_Mode:
|
||||
|
||||
break;
|
||||
case XPMineItemType_Real_Name_Authentic:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#pragma mark - UITableViewDelegate And UITableViewDataSource
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
if (section == 0) {
|
||||
return 1;
|
||||
}
|
||||
return self.datasource.count;
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return 2;
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (indexPath.section == 0) {
|
||||
return 180;
|
||||
};
|
||||
|
||||
return 53;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (indexPath.section == 0) {
|
||||
XPMineMatchTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineMatchTableViewCell class])];
|
||||
if (cell == nil) {
|
||||
cell = [[XPMineMatchTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineMatchTableViewCell class])];
|
||||
}
|
||||
cell.datasource = self.matchItemArray;
|
||||
cell.delegate = self;
|
||||
return cell;
|
||||
} else {
|
||||
XPMineMenuTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineMenuTableViewCell class])];
|
||||
if (cell == nil) {
|
||||
cell = [[XPMineMenuTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineMenuTableViewCell class])];
|
||||
}
|
||||
XPMineItemModel * item = [self.datasource objectAtIndex:indexPath.row];
|
||||
cell.itemModel = item;
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
|
||||
if (section == 1) {
|
||||
return 15;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
|
||||
UIView * view = [[UIView alloc] init];
|
||||
view.backgroundColor = [UIColor clearColor];
|
||||
return view;
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
XPMineItemModel * model = [self.datasource objectAtIndex:indexPath.row];
|
||||
[self pushViewControllerWithType:model.type];
|
||||
}
|
||||
#pragma mark - XPMineHeadViewDelegate
|
||||
///点击头像
|
||||
- (void)xPMineHeadView:(XPMineHeadView *)view didClickAvatar:(UserInfoModel *)info {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - XPMineProtocol
|
||||
- (void)onGetNormalItemsSuccess:(NSArray<XPMineItemModel *> *)normalItems {
|
||||
self.datasource = normalItems;
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)onGetMatchItemsSuccess:(NSArray<XPMineItemModel *> *)matchItems {
|
||||
self.matchItemArray = matchItems;
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo {
|
||||
self.headView.userInfo = userInfo;
|
||||
}
|
||||
#pragma mark - XPMineMatchTableViewCellDelegate
|
||||
- (void)xPMineMatchTableViewCell:(XPMineMatchTableViewCell *)cell didSelectItem:(XPMineItemModel *)item {
|
||||
[self pushViewControllerWithType:item.type];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UITableView *)tableView {
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
|
||||
_tableView.delegate = self;
|
||||
_tableView.dataSource = self;
|
||||
_tableView.showsVerticalScrollIndicator = NO;
|
||||
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||||
[_tableView registerClass:[XPMineMenuTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineMenuTableViewCell class])];
|
||||
[_tableView registerClass:[XPMineMatchTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineMatchTableViewCell class])];
|
||||
_tableView.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return _tableView;
|
||||
}
|
||||
|
||||
- (XPMineHeadView *)headView {
|
||||
if (!_headView) {
|
||||
_headView = [[XPMineHeadView alloc] initWithFrame:CGRectMake(0, 0,KScreenWidth , 203 + kSafeAreaTopHeight)];
|
||||
_headView.delegate = self;
|
||||
}
|
||||
return _headView;
|
||||
}
|
||||
|
||||
- (UIButton *)settingButton {
|
||||
if (!_settingButton) {
|
||||
_settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_settingButton setImage:[UIImage imageNamed:@"mine_nav_setting"] forState:UIControlStateNormal];
|
||||
[_settingButton setImage:[UIImage imageNamed:@"mine_nav_setting"] forState:UIControlStateSelected];
|
||||
[_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _settingButton;
|
||||
}
|
||||
|
||||
|
||||
@end
|
@@ -13,8 +13,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
+ (void)requestTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType;
|
||||
|
||||
+ (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -12,9 +12,4 @@
|
||||
+ (void)requestTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType {
|
||||
[self makeRequest:@"oauth/ticket" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, accessToken, issueType, nil];
|
||||
}
|
||||
|
||||
+ (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid {
|
||||
[self makeRequest:@"user/get" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#import "LoginBindPhoneViewController.h"
|
||||
#import "LoginFullInfoViewController.h"
|
||||
#import "XplanFBFlutterViewContainer.h"
|
||||
#import "XPMineViewController.h"
|
||||
///Present
|
||||
#import "MainPresenter.h"
|
||||
#import "MainProtocol.h"
|
||||
@@ -119,8 +120,9 @@
|
||||
#endif
|
||||
[self addChildViewController:[self createTabBarItem:fvcGame title:tabLabel[0] image:normalImageNames[0] selectedImage:selectImageNames[0]]];
|
||||
|
||||
BaseViewController *bvcMe = [[BaseViewController alloc] init];
|
||||
[self addChildViewController:[self createTabBarItem:bvcMe title:tabLabel[1] image:normalImageNames[1] selectedImage:selectImageNames[1]]];
|
||||
XPMineViewController *bvcMe = [[XPMineViewController alloc] init];
|
||||
[self createTabBarItem:bvcMe title:tabLabel[1] image:normalImageNames[1] selectedImage:selectImageNames[1]];
|
||||
[self addChildViewController:bvcMe];
|
||||
|
||||
self.selectedIndex = 1;
|
||||
}
|
||||
|