我的模块的我的页面

This commit is contained in:
fengshuo
2021-09-16 19:30:22 +08:00
parent 92b97c4747
commit 2c6b42a6f0
73 changed files with 1726 additions and 10 deletions

View File

@@ -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 */,

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

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

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View 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

View File

@@ -0,0 +1,12 @@
//
// Api+Mine.m
// xplan-ios
//
// Created by on 2021/9/16.
//
#import "Api+Mine.h"
@implementation Api (Mine)
@end

View 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

View File

@@ -0,0 +1,12 @@
//
// XPMineItemModel.m
// xplan-ios
//
// Created by on 2021/9/16.
//
#import "XPMineItemModel.h"
@implementation XPMineItemModel
@end

View 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

View 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

View 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

View File

@@ -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

View File

@@ -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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}