This commit is contained in:
pengguangjian 2024-10-14 18:29:54 +08:00
parent f3171974d7
commit 4179c34a03
79 changed files with 2293 additions and 19 deletions

View File

@ -91,6 +91,17 @@
CA487D952CA407F100AE773B /* D-DIN-PRO-700-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CA487D942CA407F100AE773B /* D-DIN-PRO-700-Bold.otf */; };
CA487D982CA40A8300AE773B /* StartPayDaoJiShiView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA487D972CA40A8300AE773B /* StartPayDaoJiShiView.m */; };
CA487D9B2CA40D3A00AE773B /* StartPayGoodsPayView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA487D9A2CA40D3A00AE773B /* StartPayGoodsPayView.m */; };
CA6B97122CBCAC14000213F3 /* FanWenListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97112CBCAC14000213F3 /* FanWenListTableViewCell.m */; };
CA6B97162CBCBCC1000213F3 /* FanWenDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97152CBCBCC1000213F3 /* FanWenDetailViewController.m */; };
CA6B971A2CBCBD56000213F3 /* FanWenDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97192CBCBD56000213F3 /* FanWenDetailView.m */; };
CA6B971E2CBCC8C3000213F3 /* AIChatBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B971D2CBCC8C3000213F3 /* AIChatBottomView.m */; };
CA6B97222CBCEB56000213F3 /* AIChatArcView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97212CBCEB56000213F3 /* AIChatArcView.m */; };
CA6B97252CBCEBE3000213F3 /* AIChatTextTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97242CBCEBE3000213F3 /* AIChatTextTableViewCell.m */; };
CA6B97292CBD04FA000213F3 /* AIChatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97282CBD04FA000213F3 /* AIChatModel.m */; };
CA6B972C2CBD10FB000213F3 /* AIChatFunctionView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B972B2CBD10FB000213F3 /* AIChatFunctionView.m */; };
CA6B97302CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B972F2CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.m */; };
CA6B97342CBD1FA0000213F3 /* AIChaAnswerView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97332CBD1FA0000213F3 /* AIChaAnswerView.m */; };
CA6B97372CBD2102000213F3 /* AIChaAnswerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA6B97362CBD2102000213F3 /* AIChaAnswerTableViewCell.m */; };
CA8181882C9E58B100EE7E6E /* StartKTXZWenZhangViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA8181872C9E58B100EE7E6E /* StartKTXZWenZhangViewController.m */; };
CA81818B2C9E598300EE7E6E /* StartKTXZWenZhangView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA81818A2C9E598300EE7E6E /* StartKTXZWenZhangView.m */; };
CA81818E2C9E60B100EE7E6E /* ViewLable.m in Sources */ = {isa = PBXBuildFile; fileRef = CA81818D2C9E60B100EE7E6E /* ViewLable.m */; };
@ -511,6 +522,28 @@
CA487D972CA40A8300AE773B /* StartPayDaoJiShiView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StartPayDaoJiShiView.m; sourceTree = "<group>"; };
CA487D992CA40D3A00AE773B /* StartPayGoodsPayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StartPayGoodsPayView.h; sourceTree = "<group>"; };
CA487D9A2CA40D3A00AE773B /* StartPayGoodsPayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StartPayGoodsPayView.m; sourceTree = "<group>"; };
CA6B97102CBCAC14000213F3 /* FanWenListTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FanWenListTableViewCell.h; sourceTree = "<group>"; };
CA6B97112CBCAC14000213F3 /* FanWenListTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FanWenListTableViewCell.m; sourceTree = "<group>"; };
CA6B97142CBCBCC1000213F3 /* FanWenDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FanWenDetailViewController.h; sourceTree = "<group>"; };
CA6B97152CBCBCC1000213F3 /* FanWenDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FanWenDetailViewController.m; sourceTree = "<group>"; };
CA6B97182CBCBD56000213F3 /* FanWenDetailView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FanWenDetailView.h; sourceTree = "<group>"; };
CA6B97192CBCBD56000213F3 /* FanWenDetailView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FanWenDetailView.m; sourceTree = "<group>"; };
CA6B971C2CBCC8C3000213F3 /* AIChatBottomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatBottomView.h; sourceTree = "<group>"; };
CA6B971D2CBCC8C3000213F3 /* AIChatBottomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatBottomView.m; sourceTree = "<group>"; };
CA6B97202CBCEB56000213F3 /* AIChatArcView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatArcView.h; sourceTree = "<group>"; };
CA6B97212CBCEB56000213F3 /* AIChatArcView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatArcView.m; sourceTree = "<group>"; };
CA6B97232CBCEBE3000213F3 /* AIChatTextTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatTextTableViewCell.h; sourceTree = "<group>"; };
CA6B97242CBCEBE3000213F3 /* AIChatTextTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatTextTableViewCell.m; sourceTree = "<group>"; };
CA6B97272CBD04FA000213F3 /* AIChatModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatModel.h; sourceTree = "<group>"; };
CA6B97282CBD04FA000213F3 /* AIChatModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatModel.m; sourceTree = "<group>"; };
CA6B972A2CBD10FB000213F3 /* AIChatFunctionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatFunctionView.h; sourceTree = "<group>"; };
CA6B972B2CBD10FB000213F3 /* AIChatFunctionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatFunctionView.m; sourceTree = "<group>"; };
CA6B972E2CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChatFunctionCollectionViewCell.h; sourceTree = "<group>"; };
CA6B972F2CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChatFunctionCollectionViewCell.m; sourceTree = "<group>"; };
CA6B97322CBD1FA0000213F3 /* AIChaAnswerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChaAnswerView.h; sourceTree = "<group>"; };
CA6B97332CBD1FA0000213F3 /* AIChaAnswerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChaAnswerView.m; sourceTree = "<group>"; };
CA6B97352CBD2102000213F3 /* AIChaAnswerTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AIChaAnswerTableViewCell.h; sourceTree = "<group>"; };
CA6B97362CBD2102000213F3 /* AIChaAnswerTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AIChaAnswerTableViewCell.m; sourceTree = "<group>"; };
CA8181862C9E58B100EE7E6E /* StartKTXZWenZhangViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StartKTXZWenZhangViewController.h; sourceTree = "<group>"; };
CA8181872C9E58B100EE7E6E /* StartKTXZWenZhangViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StartKTXZWenZhangViewController.m; sourceTree = "<group>"; };
CA8181892C9E598300EE7E6E /* StartKTXZWenZhangView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StartKTXZWenZhangView.h; sourceTree = "<group>"; };
@ -1638,6 +1671,87 @@
path = cell;
sourceTree = "<group>";
};
CA6B970F2CBCAC01000213F3 /* cell */ = {
isa = PBXGroup;
children = (
CA6B97102CBCAC14000213F3 /* FanWenListTableViewCell.h */,
CA6B97112CBCAC14000213F3 /* FanWenListTableViewCell.m */,
);
path = cell;
sourceTree = "<group>";
};
CA6B97132CBCBCA4000213F3 /* 详情 */ = {
isa = PBXGroup;
children = (
CA6B97172CBCBD4C000213F3 /* view */,
CA6B97142CBCBCC1000213F3 /* FanWenDetailViewController.h */,
CA6B97152CBCBCC1000213F3 /* FanWenDetailViewController.m */,
);
path = "详情";
sourceTree = "<group>";
};
CA6B97172CBCBD4C000213F3 /* view */ = {
isa = PBXGroup;
children = (
CA6B97182CBCBD56000213F3 /* FanWenDetailView.h */,
CA6B97192CBCBD56000213F3 /* FanWenDetailView.m */,
);
path = view;
sourceTree = "<group>";
};
CA6B971B2CBCC8AE000213F3 /* view */ = {
isa = PBXGroup;
children = (
CA6B971C2CBCC8C3000213F3 /* AIChatBottomView.h */,
CA6B971D2CBCC8C3000213F3 /* AIChatBottomView.m */,
);
path = view;
sourceTree = "<group>";
};
CA6B971F2CBCEA86000213F3 /* cell */ = {
isa = PBXGroup;
children = (
CA6B97312CBD1F7F000213F3 /* 提问列表 */,
CA6B972D2CBD1197000213F3 /* 默认功能 */,
CA6B97202CBCEB56000213F3 /* AIChatArcView.h */,
CA6B97212CBCEB56000213F3 /* AIChatArcView.m */,
CA6B97232CBCEBE3000213F3 /* AIChatTextTableViewCell.h */,
CA6B97242CBCEBE3000213F3 /* AIChatTextTableViewCell.m */,
);
path = cell;
sourceTree = "<group>";
};
CA6B97262CBD04EF000213F3 /* model */ = {
isa = PBXGroup;
children = (
CA6B97272CBD04FA000213F3 /* AIChatModel.h */,
CA6B97282CBD04FA000213F3 /* AIChatModel.m */,
);
path = model;
sourceTree = "<group>";
};
CA6B972D2CBD1197000213F3 /* 默认功能 */ = {
isa = PBXGroup;
children = (
CA6B972A2CBD10FB000213F3 /* AIChatFunctionView.h */,
CA6B972B2CBD10FB000213F3 /* AIChatFunctionView.m */,
CA6B972E2CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.h */,
CA6B972F2CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.m */,
);
path = "默认功能";
sourceTree = "<group>";
};
CA6B97312CBD1F7F000213F3 /* 提问列表 */ = {
isa = PBXGroup;
children = (
CA6B97322CBD1FA0000213F3 /* AIChaAnswerView.h */,
CA6B97332CBD1FA0000213F3 /* AIChaAnswerView.m */,
CA6B97352CBD2102000213F3 /* AIChaAnswerTableViewCell.h */,
CA6B97362CBD2102000213F3 /* AIChaAnswerTableViewCell.m */,
);
path = "提问列表";
sourceTree = "<group>";
};
CA8181932C9E750900EE7E6E /* view */ = {
isa = PBXGroup;
children = (
@ -1884,6 +1998,8 @@
CABA145B2C9D0AF7002CB3B1 /* 范文 */ = {
isa = PBXGroup;
children = (
CA6B97132CBCBCA4000213F3 /* 详情 */,
CA6B970F2CBCAC01000213F3 /* cell */,
CABA14622C9D0B25002CB3B1 /* FanWenViewController.h */,
CABA14632C9D0B25002CB3B1 /* FanWenViewController.m */,
CA0C3ABA2CB536F800E01A72 /* FanWenListViewController.h */,
@ -1895,6 +2011,9 @@
CABA145C2C9D0AFC002CB3B1 /* AIChart */ = {
isa = PBXGroup;
children = (
CA6B97262CBD04EF000213F3 /* model */,
CA6B971F2CBCEA86000213F3 /* cell */,
CA6B971B2CBCC8AE000213F3 /* view */,
CABA14652C9D0B31002CB3B1 /* AIChatViewController.h */,
CABA14662C9D0B31002CB3B1 /* AIChatViewController.m */,
);
@ -3208,6 +3327,7 @@
CBD422C028DAF38900C32440 /* KAlterView.m in Sources */,
CA0D08302CA4FBDB0086855E /* ShouYeXieZuoTableViewCell.m in Sources */,
CABA14BB2C9D4330002CB3B1 /* PublicUploadImageManager.m in Sources */,
CA6B97292CBD04FA000213F3 /* AIChatModel.m in Sources */,
CA0D08412CA52F800086855E /* ShouYeShenFenViewController.m in Sources */,
CA4257AA2CA2A30C00A36A10 /* StartZNPPTYuLanViewController.m in Sources */,
CB489F9D2744A0BD00DA044A /* AssistiveView.m in Sources */,
@ -3223,10 +3343,12 @@
CA4257A62CA29FE700A36A10 /* StartZNPPTDaGangAlterLoadView.m in Sources */,
CA0C3A992CB4D4F500E01A72 /* ZhiNengXieZuoDuanLuoView.m in Sources */,
CB489F942744A0BD00DA044A /* AreaprovinceListModel.m in Sources */,
CA6B971E2CBCC8C3000213F3 /* AIChatBottomView.m in Sources */,
CA0C3A832CB4C27E00E01A72 /* HuanGeSiLuViewController.m in Sources */,
CA0C3A962CB4D06600E01A72 /* ChongXieYiPianView.m in Sources */,
CABA14B02C9D4318002CB3B1 /* UserAccountModel.m in Sources */,
CA4257982CA2914100A36A10 /* StartZNPPTHUDAlter.m in Sources */,
CA6B97222CBCEB56000213F3 /* AIChatArcView.m in Sources */,
CB489F7C2744A0BD00DA044A /* RSAEncrypt.m in Sources */,
CB489F6B2744A0BD00DA044A /* LJsignView.m in Sources */,
CB489F622744A0BD00DA044A /* MDBwebVIew.m in Sources */,
@ -3245,10 +3367,12 @@
CA11ED7D2CA6B0DE00209DFC /* XieZuoFenXiangAlterView.m in Sources */,
CAC806732CA171ED00C21AA7 /* StartPZXZPageView.m in Sources */,
CABA14B72C9D4318002CB3B1 /* UserUploadModel.m in Sources */,
CA6B971A2CBCBD56000213F3 /* FanWenDetailView.m in Sources */,
CB489FB22744A0BD00DA044A /* FSActionSheetItem.m in Sources */,
CA0C3AA52CB4DED200E01A72 /* DuanLuoXieZuoCellView.m in Sources */,
CA4257AE2CA2AF3600A36A10 /* StartZNPPTYuLanTableViewCell.m in Sources */,
CA0D08362CA501710086855E /* ShouYeToolsTableViewCell.m in Sources */,
CA6B97372CBD2102000213F3 /* AIChaAnswerTableViewCell.m in Sources */,
CB489F4B2744A0BD00DA044A /* PGGDatePickView.m in Sources */,
CB489FB72744A0BD00DA044A /* UIAlertController+Blocks.m in Sources */,
CABA14612C9D0B1C002CB3B1 /* ShouYeViewController.m in Sources */,
@ -3283,6 +3407,7 @@
CB489F7A2744A0BD00DA044A /* FSTextView.m in Sources */,
CAC8065C2CA1449E00C21AA7 /* StartZNXZKeysViewController.m in Sources */,
CAB0D3872CAA5693009BF67D /* TiCaiAlterTableViewCell.m in Sources */,
CA6B97342CBD1FA0000213F3 /* AIChaAnswerView.m in Sources */,
CA0FD6A42CA8FF5C009A4417 /* FXWDPFView.m in Sources */,
CABA14B32C9D4318002CB3B1 /* UserConfigModel.m in Sources */,
CA8181992C9E77FB00EE7E6E /* DownJDLoadView.m in Sources */,
@ -3331,6 +3456,7 @@
CABA14712C9D0D4E002CB3B1 /* StartViewController.m in Sources */,
CABA14892C9D2AE2002CB3B1 /* StartGNTiShiView.m in Sources */,
CB489F8E2744A0BD00DA044A /* UITextFieldYS.m in Sources */,
CA6B97302CBD11B1000213F3 /* AIChatFunctionCollectionViewCell.m in Sources */,
CB489F922744A0BD00DA044A /* IndexGetNewsModel.m in Sources */,
CAC806522CA137E600C21AA7 /* StartZNXZViewController.m in Sources */,
CAA600DD2CA95B0200026CF4 /* KeTangXieZuoNJTableViewCell.m in Sources */,
@ -3373,6 +3499,7 @@
CB489F972744A0BD00DA044A /* WkWebviewViewController.m in Sources */,
CB489F692744A0BD00DA044A /* CalendarDataDays.m in Sources */,
CB489F932744A0BD00DA044A /* PutImageModel.m in Sources */,
CA6B97252CBCEBE3000213F3 /* AIChatTextTableViewCell.m in Sources */,
CA11ED5D2CA653F600209DFC /* CamreImagesView.m in Sources */,
CA0FD6A02CA8FA88009A4417 /* FenXiangHaiBaoInfoSuperItemView.m in Sources */,
CAB0F36A2CAA9255003B0C39 /* FenXiangWenZhangAlterView.m in Sources */,
@ -3389,6 +3516,7 @@
CABA14D92C9D5071002CB3B1 /* PageControlView.m in Sources */,
CA4257852CA24E1100A36A10 /* StartPZXZDetailViewController.m in Sources */,
CB489FA52744A0BD00DA044A /* ZJSegmentStyle.m in Sources */,
CA6B97122CBCAC14000213F3 /* FanWenListTableViewCell.m in Sources */,
CA0D08672CA548E50086855E /* ShouYeLiShiJiLuXZTableViewController.m in Sources */,
CABA147F2C9D19A0002CB3B1 /* TextCollectionViewCell.m in Sources */,
CA487D982CA40A8300AE773B /* StartPayDaoJiShiView.m in Sources */,
@ -3402,6 +3530,7 @@
CABA14D12C9D4961002CB3B1 /* StartGNView.m in Sources */,
CB489FA82744A0BD00DA044A /* XLProgressView.m in Sources */,
CA8181AD2C9EB95700EE7E6E /* StartKTXZPGDetailZHView.m in Sources */,
CA6B97162CBCBCC1000213F3 /* FanWenDetailViewController.m in Sources */,
CB489F802744A0BD00DA044A /* NSString+Base64.m in Sources */,
CA0D08572CA543440086855E /* ShouYeLSKTPGTableViewCell.m in Sources */,
CB489FD82744A30000DA044A /* PGGMovieLineSetView.m in Sources */,
@ -3438,6 +3567,7 @@
CA0C3A922CB4D03B00E01A72 /* ChongXieYiPianViewController.m in Sources */,
CB489F702744A0BD00DA044A /* TabBarController.m in Sources */,
CA11ED702CA6946500209DFC /* KaiTongAlterTQView.m in Sources */,
CA6B972C2CBD10FB000213F3 /* AIChatFunctionView.m in Sources */,
CAB0D3712CAA3DAE009BF67D /* KeTangXieZuoXiangQingView.m in Sources */,
CABA14CE2C9D4395002CB3B1 /* MIUAES.m in Sources */,
CA0FD69A2CA8F6DE009A4417 /* FenXiangHaiBaoView.m in Sources */,

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ai_语句扩写@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ai_语句扩写@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.3 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,8 +1,8 @@
#import "FSTextView.h"
CGFloat const kFSTextViewPlaceholderVerticalMargin = 8.0; ///< placeholder
CGFloat const kFSTextViewPlaceholderHorizontalMargin = 6.0; ///< placeholder
CGFloat const kFSTextViewPlaceholderVerticalMargin = 10.0; ///< placeholder
CGFloat const kFSTextViewPlaceholderHorizontalMargin = 12.0; ///< placeholder
@interface FSTextView ()<UITextViewDelegate>

View File

@ -18,6 +18,8 @@ typedef void(^ViewLableBackHeight)(float fheight,BOOL isend);
@property (nonatomic , strong) UIFont *textFont;
///1个字需要多少s
@property (nonatomic , assign) float fspeed;
///是否关闭动画写入
@property (nonatomic , assign) BOOL isCloseAnimation;
///
@property (nonatomic , strong) ViewLableBackHeight backHeight;

View File

@ -77,7 +77,34 @@
-(void)setStrValue:(NSString *)strValue
{
_strValue = strValue;
[self showText];
if(self.isCloseAnimation)
{
[self.imgvb setHidden:YES];
NSString *str = self.strValue;
///
NSMutableParagraphStyle *style = [NSMutableParagraphStyle new];
style.lineSpacing = 5;
style.lineBreakMode = NSLineBreakByWordWrapping;
style.alignment = NSTextAlignmentLeft;
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:str];
[attrString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, str.length)];
self.lbname.attributedText = attrString;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
float fheight = [Tools getLabelHeightWithText:self.lbname.text width:self.width font:self.lbname.font.pointSize linHeight:5]+1;
[self mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(fheight);
}];
self.backHeight(fheight,NO);
});
}
else
{
[self showText];
}
}
-(void)showText
{

View File

@ -6,26 +6,181 @@
//
#import "AIChatViewController.h"
#import "AIChatBottomView.h"
#import "AIChatTextTableViewCell.h"
@interface AIChatViewController ()
@interface AIChatViewController ()<UITableViewDelegate,UITableViewDataSource>
///
@property (nonatomic , strong) UITableView *tableView;
///
@property (nonatomic , strong) NSMutableArray *arrdata;
@end
@implementation AIChatViewController
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.navigationController setNavigationBarHidden:YES animated:NO];
[self showNaviGationView:YES];
[self.navigationView setTitle:@"" titleColor:RGBCOLOR(60, 60, 60)];
[self.navigationView setBackgroundColor:[UIColor clearColor]];
[self.view setBackgroundColor:RGBCOLOR(249, 249, 249)];
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"ai_bg"]];
[self.view addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.right.equalTo(self.view);
}];
[self.view sendSubviewToBack:imgvback];
UIView *viewback = [[UIView alloc] init];
[self.view addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.width.equalTo(self.view);
make.top.offset(KMagrinTop);
make.height.equalTo(self.view).offset(-KMagrinTop);
}];
AIChatBottomView *viewbottom = [[AIChatBottomView alloc] init];
[viewbottom setBackgroundColor:[UIColor whiteColor]];
[viewback addSubview:viewbottom];
[viewbottom mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.bottom.width.equalTo(viewback);
}];
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[tableView setBackgroundColor:[UIColor clearColor]];
[tableView setDelegate:self];
[tableView setDataSource:self];
[viewback addSubview:tableView];
[tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.width.equalTo(viewback);
make.bottom.equalTo(viewbottom.mas_top);
}];
_tableView = tableView;
[self getData];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
-(void)getData
{
self.arrdata = [NSMutableArray new];
AIChatModel *model = [AIChatModel new];
model.messageType = 0;
model.text = @"你好我是你的AI助手有什么写作方面的问题都可以问我你看需要我在哪些方面帮助你呢";
model.isAnimation = NO;
[self.arrdata addObject:model];
AIChatModel *model1 = [AIChatModel new];
model1.messageType = 0;
model1.text = @"你好我是你的AI助手";
model1.isAnimation = NO;
[self.arrdata addObject:model1];
AIChatModel *model2 = [AIChatModel new];
model2.messageType = 2;
model2.text = @"";
model2.arrfunction = @[@"写作灵感",@"作文框架",@"语句扩写",@"作文开头",@"写作技巧",@"诗句名言"];
model2.isAnimation = NO;
[self.arrdata addObject:model2];
AIChatModel *model3 = [AIChatModel new];
model3.messageType = 1;
model3.text = @"你好我是你的AI助手";
model3.isAnimation = NO;
model3.ismy = YES;
[self.arrdata addObject:model3];
AIChatModel *model4 = [AIChatModel new];
model4.messageType = 3;
model4.text = @"你对写作灵感有疑问,请参考以下方式向我提问:";
model4.arrfunction = @[@"介绍一种事物的创作灵感",@"记一次游戏的写作灵感",@"如何从电影中获得写作启示"];
model4.isAnimation = NO;
[self.arrdata addObject:model4];
[self.tableView reloadData];
}
*/
#pragma mark - UITableView
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.arrdata.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *strcell = @"AIChatTextTableViewCell";
AIChatTextTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strcell];
if(!cell)
{
cell = [[AIChatTextTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strcell];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
cell.model = self.arrdata[indexPath.row];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.01;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
AIChatModel *model = self.arrdata[indexPath.row];
if(model.messageType==2)return 200;
if(model.height>0)
{
return model.height;
}
float fheight = 55;
NSString *strtext = model.text;
if(model.messageType==1)
{///
strtext = [NSString stringWithFormat:@" %@",model.text];
}
else if (model.messageType==3)
{///
fheight = [Tools getLabelHeightWithText:model.text width:UISCREEN_WIDTH-80 font:14 linHeight:0]+1;
fheight+=model.arrfunction.count*47+35;
return fheight;
}
if([Tools getWidthWithText:strtext height:20 font:14]>UISCREEN_WIDTH-80)
{
fheight = [Tools getLabelHeightWithText:strtext width:UISCREEN_WIDTH-80 font:14 linHeight:5]+38;
}
return fheight;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return [UIView new];
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
@end

View File

@ -0,0 +1,17 @@
//
// AIChatArcView.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChatArcView : UIView
///0left 1right
@property (nonatomic , assign) int type;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,86 @@
//
// AIChatArcView.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatArcView.h"
@implementation AIChatArcView
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
if(self.type==1)
{
CGContextSetFillColorWithColor(context, RGBCOLOR(108, 119, 246).CGColor);
}
else
{
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
}
[self getDrawPath:context];
CGContextFillPath(context);
}
-(void)getDrawPath:(CGContextRef)context{
CGRect rrect = self.bounds;
CGFloat radius = 20.0;
CGFloat minx = CGRectGetMinX(rrect)+10,
maxx = CGRectGetMaxX(rrect);
if(self.type==1)
{
minx = CGRectGetMinX(rrect);
maxx = CGRectGetMaxX(rrect)-10;
}
CGFloat miny = CGRectGetMinY(rrect),
maxy = CGRectGetMaxY(rrect);
if(self.type==1)
{
CGContextMoveToPoint(context, maxx+10, miny);
CGContextAddArcToPoint(context, maxx, miny, minx, miny, radius);
CGContextAddArcToPoint(context, minx, miny, minx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, maxx, maxy, radius);
CGContextAddArcToPoint(context, maxx, maxy, maxx, miny+10, radius);
CGContextAddArcToPoint(context, maxx, miny+10, maxx+10, miny, 2);
CGContextAddArcToPoint(context, maxx+10, miny, maxx, miny, 2);
}
else
{
CGContextMoveToPoint(context, minx-10, miny);
CGContextAddArcToPoint(context, minx, miny, maxx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, maxy, radius);
CGContextAddArcToPoint(context, maxx, maxy, minx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, miny+10, radius);
CGContextAddArcToPoint(context, minx, miny+10, minx-10, miny, 2);
CGContextAddArcToPoint(context, minx-10, miny, minx, miny, 2);
}
CGContextClosePath(context);
}
@end

View File

@ -0,0 +1,17 @@
//
// AIChatTextTableViewCell.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
#import "AIChatModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface AIChatTextTableViewCell : UITableViewCell
///
@property (nonatomic , strong) AIChatModel *model;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,250 @@
//
// AIChatTextTableViewCell.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatTextTableViewCell.h"
#import "AIChatArcView.h"
#import "AIChatFunctionView.h"
#import "AIChaAnswerView.h"
@interface AIChatTextTableViewCell ()
///
@property (nonatomic , strong) AIChatArcView *viewinfoLeft;
///
@property (nonatomic , strong) ViewLable *lbvalueLeft ;
///
@property (nonatomic , strong) AIChatFunctionView *functionView;
///
@property (nonatomic , strong) AIChaAnswerView *answerView;
@property (nonatomic , strong) AIChatArcView *viewinforight;
///
@property (nonatomic , strong) ViewLable *lbvalueright ;
///
@property (nonatomic , strong) UIButton *btyuyin ;
@end
@implementation AIChatTextTableViewCell
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
{
UIView *viewback = [[UIView alloc] init];
[self.contentView addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
AIChatFunctionView *functionView = [[AIChatFunctionView alloc] init];
[functionView setBackgroundColor:[UIColor whiteColor]];
[viewback addSubview:functionView];
[functionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.right.equalTo(viewback).offset(-20);
make.top.offset(15);
make.bottom.equalTo(viewback);
}];
[functionView.layer setMasksToBounds:YES];
[functionView.layer setCornerRadius:20];
[functionView setHidden:YES];
_functionView = functionView;
AIChatArcView *viewinfoLeft = [AIChatArcView new];
[viewinfoLeft setBackgroundColor:[UIColor clearColor]];
[viewback addSubview:viewinfoLeft];
[viewinfoLeft mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(15);
make.left.offset(20);
make.height.offset(40);
make.width.offset(UISCREEN_WIDTH-40);
}];
viewinfoLeft.type = 0;
_viewinfoLeft = viewinfoLeft;
AIChaAnswerView *answerView = [AIChaAnswerView new];
[viewinfoLeft addSubview:answerView];
[answerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(25);
make.top.offset(10);
make.right.equalTo(viewinfoLeft).offset(-15);
make.height.offset(10);
}];
[answerView setHidden:YES];
_answerView = answerView;
ViewLable *lbvalueLeft = [[ViewLable alloc] init];
[lbvalueLeft setTextColor:RGBCOLOR(51, 51, 51)];
[lbvalueLeft setTextFont:[UIFont systemFontOfSize:14]];
[viewinfoLeft addSubview:lbvalueLeft];
[lbvalueLeft mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(25);
make.top.offset(10);
make.right.equalTo(viewinfoLeft).offset(-15);
make.height.offset(10);
}];
lbvalueLeft.isCloseAnimation = YES;
[lbvalueLeft setBackHeight:^(float fheight, BOOL isend) {
[self.viewinfoLeft mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(fheight+20);
}];
[self.viewinfoLeft setNeedsDisplay];
if(isend)
{
self.model.height = fheight+35;
}
}];
_lbvalueLeft = lbvalueLeft;
AIChatArcView *viewinforight = [AIChatArcView new];
[viewinforight setBackgroundColor:[UIColor clearColor]];
[viewback addSubview:viewinforight];
[viewinforight mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(15);
make.right.equalTo(self).offset(-20);
make.height.offset(30);
make.width.offset(UISCREEN_WIDTH-40);
}];
viewinforight.type = 1;
[viewinforight setHidden:YES];
_viewinforight = viewinforight;
ViewLable *lbvalueright = [[ViewLable alloc] init];
[lbvalueright setTextColor:[UIColor whiteColor]];
[lbvalueright setTextFont:[UIFont systemFontOfSize:14]];
[viewinforight addSubview:lbvalueright];
[lbvalueright mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(15);
make.top.offset(10);
make.right.equalTo(viewinforight).offset(-25);
make.height.offset(10);
}];
lbvalueright.isCloseAnimation = YES;
[lbvalueright setBackHeight:^(float fheight, BOOL isend) {
[self.viewinforight mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(fheight+20);
}];
[self.viewinforight setNeedsDisplay];
if(isend)
{
self.model.height = fheight+35;
}
}];
_lbvalueright = lbvalueright;
UIButton *btyuyin = [[UIButton alloc] init];
[btyuyin setImage:[UIImage imageNamed:@"ai_yuyincell"] forState:UIControlStateNormal];
[viewinforight addSubview:btyuyin];
[btyuyin mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(lbvalueright);
make.height.offset(25);
make.width.offset(25);
make.top.offset(5);
}];
[btyuyin addTarget:self action:@selector(yuyinAction) forControlEvents:UIControlEventTouchUpInside];
_btyuyin = btyuyin;
}
return self;
}
-(void)yuyinAction
{
}
-(void)setModel:(AIChatModel *)model
{
_model = model;
[self.functionView setHidden:YES];
if(model.ismy)
{
[self.viewinfoLeft setHidden:YES];
[self.viewinforight setHidden:NO];
[self.btyuyin setHidden:YES];
NSString *strtext = model.text;
if(model.messageType==1)
{///
[self.btyuyin setHidden:NO];
strtext = [NSString stringWithFormat:@" %@",model.text];
}
float f_width = [Tools getWidthWithText:strtext height:20 font:14]+41;
if(f_width>UISCREEN_WIDTH-40)
{
f_width = UISCREEN_WIDTH-40;
}
[self.viewinforight mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.offset(f_width);
}];
self.lbvalueright.isCloseAnimation = !model.isAnimation;
self.lbvalueright.strValue = strtext;
}
else
{
[self.viewinfoLeft setHidden:NO];
[self.viewinforight setHidden:YES];
[self.viewinfoLeft setHidden:NO];
[self.answerView setHidden:YES];
[self.lbvalueLeft setHidden:YES];
if(model.messageType==2)
{
[self.viewinfoLeft setHidden:YES];
[self.functionView setHidden:NO];
self.functionView.arrdata = model.arrfunction;
}
else if(model.messageType==3)
{
[self.answerView setHidden:NO];
self.answerView.strvalue = model.text;
self.answerView.arrdata = model.arrfunction;
[self.viewinfoLeft mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.offset(UISCREEN_WIDTH-40);
}];
[self.viewinfoLeft setNeedsDisplay];
float fheigh = [Tools getLabelHeightWithText:model.text width:UISCREEN_WIDTH-80 font:14 linHeight:0]+1;
fheigh+=model.arrfunction.count*47+35;
[self.answerView mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(fheigh-25);
}];
[self.viewinfoLeft mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(fheigh-15);
}];
model.height= fheigh;
}
else
{
[self.lbvalueLeft setHidden:NO];
float f_width = [Tools getWidthWithText:model.text height:20 font:14]+41;
if(f_width>UISCREEN_WIDTH-40)
{
f_width = UISCREEN_WIDTH-40;
}
[self.viewinfoLeft mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.offset(f_width);
}];
self.lbvalueLeft.isCloseAnimation = !model.isAnimation;
self.lbvalueLeft.strValue = model.text;
}
}
}
@end

View File

@ -0,0 +1,17 @@
//
// AIChaAnswerTableViewCell.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChaAnswerTableViewCell : UITableViewCell
///
@property (nonatomic , strong) UILabel *lbname;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,57 @@
//
// AIChaAnswerTableViewCell.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChaAnswerTableViewCell.h"
@interface AIChaAnswerTableViewCell ()
@end
@implementation AIChaAnswerTableViewCell
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
{
UIView *viewback = [[UIView alloc] init];
[viewback setBackgroundColor:RGBCOLOR(226, 228, 253)];
[self.contentView addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self);
make.height.offset(37);
}];
[viewback.layer setMasksToBounds:YES];
[viewback.layer setCornerRadius:12];
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"介绍一种事物的创作灵感"];
[lbname setTextColor:RGBCOLOR(108, 119, 246)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:12]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(15);
make.centerY.equalTo(viewback);
make.right.equalTo(viewback).offset(-50);
}];
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"ai_cell_item_next"]];
[viewback addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(16);
make.centerY.equalTo(viewback);
make.right.equalTo(viewback).offset(-15);
}];
}
return self;
}
@end

View File

@ -0,0 +1,19 @@
//
// AIChaAnswerView.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChaAnswerView : UIView
///
@property (nonatomic , strong) NSString *strvalue;
///
@property (nonatomic , strong) NSArray *arrdata;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,112 @@
//
// AIChaAnswerView.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChaAnswerView.h"
#import "AIChaAnswerTableViewCell.h"
@interface AIChaAnswerView ()<UITableViewDelegate,UITableViewDataSource>
///
@property (nonatomic , strong) UILabel *lbname;
///
@property (nonatomic , strong) UITableView *tableView;
@end
@implementation AIChaAnswerView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
UILabel *lbname = [[UILabel alloc] init];
[lbname setNumberOfLines:0];
[lbname setTextColor:RGBCOLOR(51, 51, 51)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:14]];
[lbname setNumberOfLines:0];
[self addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self);
make.top.offset(0);
}];
_lbname = lbname;
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[tableView setBackgroundColor:[UIColor clearColor]];
[tableView setDelegate:self];
[tableView setDataSource:self];
[tableView setScrollEnabled:NO];
[self addSubview:tableView];
[tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self);
make.top.equalTo(lbname.mas_bottom).offset(10);
make.height.offset(47);
}];
_tableView = tableView;
}
return self;
}
-(void)setArrdata:(NSArray *)arrdata
{
_arrdata = arrdata;
[self.tableView mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(47*self.arrdata.count);
}];
[self.tableView reloadData];
}
-(void)setStrvalue:(NSString *)strvalue
{
self.lbname.text = strvalue;
}
#pragma mark - UITableView
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.arrdata.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *strcell = @"AIChaAnswerTableViewCell";
AIChaAnswerTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strcell];
if(!cell)
{
cell = [[AIChaAnswerTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strcell];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
cell.lbname.text = self.arrdata[indexPath.row];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.01;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 47;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return [UIView new];
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
@end

View File

@ -0,0 +1,18 @@
//
// AIChatFunctionCollectionViewCell.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChatFunctionCollectionViewCell : UICollectionViewCell
///
@property (nonatomic , strong) NSString *strname;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,68 @@
//
// AIChatFunctionCollectionViewCell.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatFunctionCollectionViewCell.h"
@interface AIChatFunctionCollectionViewCell ()
///
@property (nonatomic , strong) UIImageView *imgvback;
///
@property (nonatomic , strong) UILabel *lbname;
@end
@implementation AIChatFunctionCollectionViewCell
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
UIView *viewback = [[UIView alloc] init];
[viewback setBackgroundColor:[UIColor whiteColor]];
[self.contentView addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
UIView *viewitem = [[UIView alloc] init];
[viewitem setBackgroundColor:RGBCOLOR(226, 228, 253)];
[viewback addSubview:viewitem];
[viewitem mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(40);
make.centerX.equalTo(viewback);
make.centerY.equalTo(viewback).offset(-12);
}];
[viewitem.layer setMasksToBounds:YES];
[viewitem.layer setCornerRadius:11];
UIImageView *imgvback = [[UIImageView alloc] init];
[viewitem addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(28);
make.center.equalTo(viewitem);
}];
_imgvback = imgvback;
UILabel *lbname = [[UILabel alloc] init];
[lbname setTextColor:RGBCOLOR(51, 51, 51)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:14]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(viewitem.mas_bottom).offset(5);
make.centerX.equalTo(viewback);
}];
_lbname = lbname;
}
return self;
}
-(void)setStrname:(NSString *)strname
{
self.lbname.text = strname;
self.imgvback.image = [UIImage imageNamed:[NSString stringWithFormat:@"ai_%@",strname]];
}
@end

View File

@ -0,0 +1,17 @@
//
// AIChatFunctionView.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChatFunctionView : UIView
///
@property (nonatomic , strong) NSArray *arrdata;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,83 @@
//
// AIChatFunctionView.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatFunctionView.h"
#import "AIChatFunctionCollectionViewCell.h"
@interface AIChatFunctionView ()<UICollectionViewDelegate,UICollectionViewDataSource>
///
@property (nonatomic , strong) UICollectionView *collect;
@end
@implementation AIChatFunctionView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = 0;
layout.minimumInteritemSpacing = 0;
UICollectionView *collect = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
[collect setScrollEnabled:NO];
[collect setDelegate:self];
[collect setDataSource:self];
[collect setBackgroundColor:[UIColor clearColor]];
[self addSubview:collect];
[collect mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(0);
make.right.equalTo(self);
make.top.bottom.equalTo(self);
}];
[collect registerClass:[AIChatFunctionCollectionViewCell class] forCellWithReuseIdentifier:@"AIChatFunctionCollectionViewCell"];
_collect = collect;
}
return self;
}
-(void)setArrdata:(NSArray *)arrdata
{
_arrdata = arrdata;
[self.collect reloadData];
}
#pragma mark - UICollectionView
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.arrdata.count;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
AIChatFunctionCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"AIChatFunctionCollectionViewCell" forIndexPath:indexPath];
cell.strname = self.arrdata[indexPath.row];
return cell;
}
//section
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
return UIEdgeInsetsMake(7, 20, 7, 20);
}
//cell
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
return 0;
}
//cell
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout ForSectionAtIndex:(NSInteger)section{
return 0;
}
// UICollectionViewCell
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake((UISCREEN_WIDTH-80)/3.0, 85);
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
///
}
@end

View File

@ -0,0 +1,31 @@
//
// AIChatModel.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChatModel : NSObject
///消息类型0文本 1语言 2默认功能 3返回的提问列表
@property (nonatomic , assign) int messageType;
///
@property (nonatomic , strong) NSString *text;
///语音链接(只有自己发的才有语音)
@property (nonatomic , strong) NSString *audioUrl;
///
@property (nonatomic , strong) NSArray *arrfunction;
///是否是我发的消息
@property (nonatomic , assign) BOOL ismy;
@property (nonatomic , assign) BOOL isAnimation;
@property (nonatomic , assign) float height;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,12 @@
//
// AIChatModel.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatModel.h"
@implementation AIChatModel
@end

View File

@ -0,0 +1,16 @@
//
// AIChatBottomView.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface AIChatBottomView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,220 @@
//
// AIChatBottomView.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "AIChatBottomView.h"
#import "HuanGeSiLuCollectionViewCell.h"
#import "FSTextView.h"
@interface AIChatBottomView ()<UICollectionViewDelegate,UICollectionViewDataSource>
///
@property (nonatomic , strong) UICollectionView *collect;
///
@property (nonatomic , strong) NSArray *arrdata;
///
@property (nonatomic , strong) FSTextView *viewtext;
///
@property (nonatomic , strong) UIButton *btsend;
@property (nonatomic , strong) UIButton *btyuyin ;
@end
@implementation AIChatBottomView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = 0;
layout.minimumInteritemSpacing = 0;
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
UICollectionView *collect = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
[collect setDelegate:self];
[collect setDataSource:self];
[collect setShowsHorizontalScrollIndicator:NO];
[collect setBackgroundColor:[UIColor clearColor]];
[self addSubview:collect];
[collect mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(0);
make.right.equalTo(self);
make.top.offset(0);
make.height.offset(40);
}];
[collect registerClass:[HuanGeSiLuCollectionViewCell class] forCellWithReuseIdentifier:@"HuanGeSiLuCollectionViewCell"];
_collect = collect;
self.arrdata = @[@"写作灵感",@"写作题材",@"语句扩写",@"作文开头",@"写作技巧",@"诗句名言"];
FSTextView *viewtext = [[FSTextView alloc] init];
[viewtext setTextColor:RGBCOLOR(51, 51, 51)];
[viewtext setTextAlignment:NSTextAlignmentLeft];
[viewtext setFont:[UIFont systemFontOfSize:14]];
[viewtext setPlaceholder:@"请输入您的想法500字以内"];
[self addSubview:viewtext];
[viewtext mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(55);
make.top.equalTo(collect.mas_bottom).offset(10);
make.right.equalTo(self).offset(-20);
make.height.offset(40);
}];
[viewtext setTextContainerInset:UIEdgeInsetsMake(10, 8, 10, 8)];
[viewtext setMaxLength:500];
[viewtext setBackgroundColor:RGBCOLOR(245, 245, 245)];
[viewtext.layer setMasksToBounds:YES];
[viewtext.layer setCornerRadius:20];
_viewtext = viewtext;
[viewtext addTextDidChangeHandler:^(FSTextView *textView) {
if(textView.text.length>0)
{
float fheight = [Tools getLabelHeightWithText:textView.text width:UISCREEN_WIDTH-55-60-16 font:14 linHeight:0]+20;
if(fheight<40)fheight=40;
if(fheight>96)fheight=96;
[self.btsend setHidden:NO];
[self.viewtext mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-60);
make.height.offset(fheight);
}];
}
else
{
[self.btsend setHidden:YES];
[self.viewtext mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-20);
make.height.offset(40);
}];
}
}];
UIButton *btinput = [[UIButton alloc] init];
[btinput setImage:[UIImage imageNamed:@"ai_yuyin"] forState:UIControlStateNormal];
[btinput setImage:[UIImage imageNamed:@"ai_jianpan"] forState:UIControlStateSelected];
[self addSubview:btinput];
[btinput mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(40);
make.bottom.equalTo(viewtext);
make.left.offset(7);
}];
[btinput addTarget:self action:@selector(inputAction:) forControlEvents:UIControlEventTouchUpInside];
UIButton *btsend = [[UIButton alloc] init];
[btsend setImage:[UIImage imageNamed:@"ai_send"] forState:UIControlStateNormal];
[self addSubview:btsend];
[btsend mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(40);
make.bottom.equalTo(viewtext);
make.right.equalTo(self).offset(-10);
}];
[btsend setHidden:YES];
[btsend addTarget:self action:@selector(sendAction) forControlEvents:UIControlEventTouchUpInside];
_btsend = btsend;
[self mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(viewtext).offset(10);
}];
UIButton *btyuyin = [[UIButton alloc] init];
[btyuyin setTitle:@"按住说话" forState:UIControlStateNormal];
[btyuyin setTitleColor:RGBCOLOR(108, 108, 108) forState:UIControlStateNormal];
[btyuyin.titleLabel setFont:[UIFont systemFontOfSize:15]];
[btyuyin.layer setMasksToBounds:YES];
[btyuyin.layer setCornerRadius:20];
[btyuyin setBackgroundColor:RGBCOLOR(245, 245, 245)];
[self addSubview:btyuyin];
[btyuyin mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.equalTo(viewtext);
make.height.offset(40);
make.right.equalTo(self).offset(-20);
}];
// [btyuyin addTarget:self action:@selector(yuyinAction) forControlEvents:UIControlEventTouchUpInside];
[btyuyin setHidden:YES];
_btyuyin = btyuyin;
}
return self;
}
-(void)inputAction:(UIButton *)sender
{
sender.selected = !sender.selected;
if(sender.selected)
{
[self.btyuyin setHidden:NO];
[self.btsend setHidden:YES];
[self.viewtext setHidden:YES];
[self endEditing:YES];
[self.viewtext mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(40);
}];
}
else
{
[self.btyuyin setHidden:YES];
if(self.viewtext.text.length>0)
{
[self.btsend setHidden:NO];
}
else
{
[self.btsend setHidden:YES];
}
[self.viewtext setHidden:NO];
[self.viewtext becomeFirstResponder];
float fheight = [Tools getLabelHeightWithText:self.viewtext.text width:UISCREEN_WIDTH-55-60-16 font:14 linHeight:0]+20;
if(fheight<40)fheight=40;
if(fheight>96)fheight=96;
[self.btsend setHidden:NO];
[self.viewtext mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-60);
make.height.offset(fheight);
}];
}
}
-(void)sendAction
{
}
#pragma mark - UICollectionView
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.arrdata.count;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
HuanGeSiLuCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HuanGeSiLuCollectionViewCell" forIndexPath:indexPath];
cell.lbname.text = self.arrdata[indexPath.row];
[cell.viewback.layer setCornerRadius:13];
return cell;
}
//section
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
return UIEdgeInsetsMake(7, 20, 7, 20);
}
//cell
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
return 15;
}
//cell
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout ForSectionAtIndex:(NSInteger)section{
return 15;
}
// UICollectionViewCell
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(72, 26);
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
///
}
@end

View File

@ -6,9 +6,12 @@
//
#import "FanWenListViewController.h"
#import "FanWenListTableViewCell.h"
#import "FanWenDetailViewController.h"
@interface FanWenListViewController ()
@interface FanWenListViewController ()<UITableViewDelegate,UITableViewDataSource,DZNEmptyDataSetDelegate,DZNEmptyDataSetSource>
///
@property (nonatomic , strong) UITableView *tableView;
@end
@implementation FanWenListViewController
@ -17,9 +20,130 @@
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor clearColor]];
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[tableView setBackgroundColor:[UIColor clearColor]];
[tableView setDelegate:self];
[tableView setDataSource:self];
[self.view addSubview:tableView];
[tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.equalTo(self.view);
make.top.offset(0);
}];
[tableView setEmptyDataSetDelegate:self];
[tableView setEmptyDataSetSource:self];
_tableView = tableView;
}
#pragma mark - UITableView
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *strcell = @"FanWenListTableViewCell";
FanWenListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strcell];
if(!cell)
{
cell = [[FanWenListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strcell];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 7;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 158;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return [UIView new];
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
FanWenDetailViewController *vc = [FanWenDetailViewController new];
[self.navigationController pushViewController:vc animated:YES];
}
#pragma mark - DZNEmptyDataSetSource
- (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView
{
UIView *viewback = [[UIView alloc] init];
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:viewback attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:UISCREEN_HEIGHT-TabHeight-100];
[viewback addConstraint:heightConstraint];
[viewback setBackgroundColor:[UIColor clearColor]];
[viewback setUserInteractionEnabled:YES];
NSString *strimg = @"fanwen_noinfo";
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:strimg]];
[imgvback setContentMode:UIViewContentModeScaleAspectFit];
[viewback addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(UISCREEN_WIDTH*0.6);
make.centerX.equalTo(viewback);
make.top.offset(50);
}];
NSString *str = @"暂无结果";
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:str];
[lbname setTextColor:RGBCOLOR(51, 51, 51)];
[lbname setTextAlignment:NSTextAlignmentCenter];
[lbname setFont:[UIFont boldSystemFontOfSize:20]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(imgvback.mas_bottom).offset(20);
make.centerX.equalTo(viewback);
}];
UILabel *lbinfo = [[UILabel alloc] init];
[lbinfo setText:@"抱歉没有查询到相关的文章"];
[lbinfo setTextColor:RGBCOLOR(109, 109, 109)];
[lbinfo setTextAlignment:NSTextAlignmentCenter];
[lbinfo setFont:[UIFont systemFontOfSize:16]];
[viewback addSubview:lbinfo];
[lbinfo mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(lbname.mas_bottom).offset(10);
make.centerX.equalTo(viewback);
}];
UIButton *btok = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH-230, 40)];
[btok setTitle:@"AI写一篇" forState:UIControlStateNormal];
[btok setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btok.titleLabel setFont:[UIFont systemFontOfSize:16]];
[btok.layer setMasksToBounds:YES];
[btok.layer setCornerRadius:20];
[btok setBackgroundColor:RGBCOLOR(108, 119, 246)];
[viewback addSubview:btok];
[btok mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(115);
make.right.equalTo(viewback).offset(-115);
make.top.equalTo(lbinfo.mas_bottom).offset(38);
make.height.offset(40);
}];
[btok addTarget:self action:@selector(aiAction) forControlEvents:UIControlEventTouchUpInside];
return viewback;
}
-(void)aiAction
{
}
@end

View File

@ -30,6 +30,7 @@
[self showNaviGationView:YES];
[self.navigationView setTitle:@"" titleColor:RGBCOLOR(60, 60, 60)];
[self.navigationView setBackgroundColor:[UIColor clearColor]];
[self.view setBackgroundColor:RGBCOLOR(251, 251, 253)];
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"fanwen_bg"]];
@ -68,7 +69,7 @@
scrollPageView.contentView.backgroundColor = [UIColor clearColor];
scrollPageView.contentView.collectionView.backgroundColor = [UIColor clearColor];
_scrollPageView = scrollPageView;
[self.scrollPageView reloadWithNewTitles:@[@"全部",@"写给自己",@"检讨书",@"中考作文",@"青春",@"中考作文",@"检讨书",@"写给自己",@"青春",@"检讨书"]];
}
-(void)drawSearchView:(UIView *)view

View File

@ -0,0 +1,16 @@
//
// FanWenListTableViewCell.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface FanWenListTableViewCell : UITableViewCell
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,185 @@
//
// FanWenListTableViewCell.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "FanWenListTableViewCell.h"
@interface FanWenListTableViewCell ()
@end
@implementation FanWenListTableViewCell
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
{
UIView *viewback0 = [[UIView alloc] init];
[viewback0 setBackgroundColor:[UIColor whiteColor]];
[self.contentView addSubview:viewback0];
[viewback0 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.right.equalTo(self).offset(-20);
make.top.offset(7);
make.bottom.equalTo(self).offset(-7);
}];
[Tools normalShadow:viewback0 shadowColor:RGBACOLOR(211, 218, 225, 0.2) shadowOpacity:1 cornerRadius:21 shadowRadius:7];
UIView *viewback = [[UIView alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH-40, 144)];
[viewback setBackgroundColor:[UIColor whiteColor]];
[self.contentView addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.right.equalTo(self).offset(-20);
make.top.offset(7);
make.bottom.equalTo(self).offset(-7);
}];
[viewback.layer setMasksToBounds:YES];
[viewback.layer setCornerRadius:21];
[Tools changedView:viewback colors:@[(id)RGBCOLOR(42, 211, 237).CGColor,(id)RGBCOLOR(148, 127, 255).CGColor] startPoint:CGPointMake(0, 0) endPoint:CGPointMake(1, 0)];
UIImage *imagett = [UIImage imageNamed:@"fw_cellback"];
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[imagett resizableImageWithCapInsets:UIEdgeInsetsMake(imagett.size.height/2.0, 50, 50, imagett.size.width/2.0)]];
[viewback addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewback);
}];
UILabel *lbfen = [[UILabel alloc] init];
[lbfen setText:@"99.5分"];
[lbfen setTextColor:[UIColor whiteColor]];
[lbfen setTextAlignment:NSTextAlignmentLeft];
[lbfen setFont:[UIFont fontWithName:@"D-DIN-PRO-Bold" size:16]];
[viewback addSubview:lbfen];
[lbfen mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(11);
make.right.equalTo(viewback).offset(-15);
}];
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"作文标题"];
[lbname setTextColor:RGBCOLOR(51, 51, 51)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont boldSystemFontOfSize:16]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.offset(15);
make.width.lessThanOrEqualTo(@(UISCREEN_WIDTH-210));
}];
UIView *viewtype = [[UIView alloc] init];
[viewtype setBackgroundColor:RGBCOLOR(240, 241, 254)];
[viewback addSubview:viewtype];
[viewtype mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.offset(17);
make.left.equalTo(lbname.mas_right).offset(10);
make.top.offset(12);
}];
[viewtype.layer setMasksToBounds:YES];
[viewtype.layer setCornerRadius:4];
UILabel *lbtype = [[UILabel alloc] init];
[lbtype setText:@"记叙文"];
[lbtype setTextColor:RGBCOLOR(108, 119, 246)];
[lbtype setTextAlignment:NSTextAlignmentLeft];
[lbtype setFont:[UIFont systemFontOfSize:12]];
[viewtype addSubview:lbtype];
[lbtype mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(4);
make.centerY.equalTo(viewtype);
}];
[viewtype mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(lbtype).offset(4);
}];
UILabel *lbinfo = [[UILabel alloc] init];
[lbinfo setText:@"部分作文内容部分作文内容部分作文内容部分作文内容部分作文内容部分作文内容部分作文内容部分作文内容部分作文内容"];
[lbinfo setTextColor:RGBCOLOR(51, 51, 51)];
[lbinfo setTextAlignment:NSTextAlignmentLeft];
[lbinfo setFont:[UIFont systemFontOfSize:14]];
[lbinfo setNumberOfLines:2];
[viewback addSubview:lbinfo];
[lbinfo mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(lbname);
make.top.equalTo(lbname.mas_bottom).offset(10);
make.right.equalTo(viewback).offset(-15);
}];
UIView *viewline = [[UIView alloc] init];
[viewline setBackgroundColor:RGBCOLOR(239, 239, 239)];
[viewback addSubview:viewline];
[viewline mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(lbinfo);
make.height.offset(1);
make.top.equalTo(lbinfo.mas_bottom).offset(10);
}];
UIView *viewnj = [self drawLBType];
[viewback addSubview:viewnj];
[viewnj mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(viewline);
make.top.equalTo(viewline.mas_bottom).offset(12);
make.height.offset(21);
}];
UIView *viewzs = [self drawLBType];
[viewback addSubview:viewzs];
[viewzs mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(viewnj.mas_right).offset(10);
make.top.height.equalTo(viewnj);
}];
UIButton *btqw = [[UIButton alloc] init];
[btqw setTitle:@"查看全文" forState:UIControlStateNormal];
[btqw setTitleColor:RGBCOLOR(108, 119, 246) forState:UIControlStateNormal];
[btqw.titleLabel setFont:[UIFont systemFontOfSize:12]];
[btqw setImage:[UIImage imageNamed:@"fw_next"] forState:UIControlStateNormal];
[viewback addSubview:btqw];
[btqw mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(viewnj);
make.right.equalTo(viewline).offset(5);
make.height.offset(24);
make.width.offset(80);
}];
[btqw setIconInRight];
[btqw setUserInteractionEnabled:NO];
}
return self;
}
-(UIView *)drawLBType
{
UIView *viewback = [[UIView alloc] init];
[viewback setBackgroundColor:RGBCOLOR(246, 246, 246)];
[viewback.layer setMasksToBounds:YES];
[viewback.layer setCornerRadius:8];
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"全学段"];
[lbname setTextColor:RGBCOLOR(157, 157, 157)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:12]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(6);
make.centerY.equalTo(viewback);
}];
[lbname setTag:1];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(lbname).offset(6);
}];
return viewback;
}
@end

View File

@ -0,0 +1,16 @@
//
// FanWenDetailViewController.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface FanWenDetailViewController : BaseViewController
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,42 @@
//
// FanWenDetailViewController.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "FanWenDetailViewController.h"
#import "FanWenDetailView.h"
@interface FanWenDetailViewController ()
@end
@implementation FanWenDetailViewController
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
[self showNaviGationView:YES];
[self.navigationView setTitle:@" " titleColor:RGBCOLOR(60, 60, 60)];
[self.navigationView setBackgroundColor:[UIColor whiteColor]];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:RGBCOLOR(251, 251, 253)];
FanWenDetailView *view = [FanWenDetailView new];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.equalTo(self.view);
make.top.offset(NavHeight);
}];
}
@end

View File

@ -0,0 +1,16 @@
//
// FanWenDetailView.h
// ProductApp
//
// Created by 工作 on 2024/10/14.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface FanWenDetailView : UIView
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,206 @@
//
// FanWenDetailView.m
// ProductApp
//
// Created by on 2024/10/14.
//
#import "FanWenDetailView.h"
@interface FanWenDetailView ()
///
@property (nonatomic , strong) NSMutableArray *arrBtXin;
@end
@implementation FanWenDetailView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
UIScrollView *scvback = [[UIScrollView alloc] init];
[self addSubview:scvback];
[scvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.offset(0);
make.width.equalTo(self);
make.height.equalTo(self).offset(-TabHeight-20);
}];
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"写给自己"];
[lbname setTextColor:RGBCOLOR(51, 51, 51)];
[lbname setTextAlignment:NSTextAlignmentCenter];
[lbname setFont:[UIFont boldSystemFontOfSize:24]];
[scvback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(20);
make.left.offset(20);
make.width.equalTo(scvback).offset(-40);
}];
UILabel *lbinfo = [[UILabel alloc] init];
[lbinfo setText:@"初一丨应用文丨145字"];
[lbinfo setTextColor:RGBCOLOR(108, 108, 108)];
[lbinfo setTextAlignment:NSTextAlignmentCenter];
[lbinfo setFont:[UIFont systemFontOfSize:12]];
[scvback addSubview:lbinfo];
[lbinfo mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(lbname);
make.top.equalTo(lbname.mas_bottom).offset(15);
}];
UILabel *lbcontent = [[UILabel alloc] init];
[lbcontent setText:@" 给自己一个微笑,鼓励自己,让自己的自信心恢复原来的样子。给自己一个微笑,失败了可以重来,梦碎了可以重建,但我们不必太自责。给自己一个微笑,让自己坚持把这件事干好,干的比之前更好。"];
[lbcontent setTextColor:RGBCOLOR(51, 51, 51)];
[lbcontent setTextAlignment:NSTextAlignmentLeft];
[lbcontent setFont:[UIFont systemFontOfSize:16]];
[lbcontent setNumberOfLines:0];
[scvback addSubview:lbcontent];
[lbcontent mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(lbname);
make.top.equalTo(lbinfo.mas_bottom).offset(20);
}];
UILabel *lbpf = [[UILabel alloc] init];
[lbpf setText:@"请给以上内容评分"];
[lbpf setTextColor:RGBCOLOR(109, 109, 109)];
[lbpf setTextAlignment:NSTextAlignmentLeft];
[lbpf setFont:[UIFont systemFontOfSize:14]];
[scvback addSubview:lbpf];
[lbpf mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(lbcontent.mas_bottom).offset(40);
make.centerX.equalTo(lbname);
}];
UIView *viewxin = [[UIView alloc] init];
[scvback addSubview:viewxin];
[viewxin mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(lbpf.mas_bottom).offset(10);
make.height.offset(30);
make.centerX.equalTo(lbname);
}];
[self drawXinView:viewxin];
UILabel *lbts = [[UILabel alloc] init];
[lbts setText:@"请给以上内容评分"];
[lbts setTextColor:RGBCOLOR(109, 109, 109)];
[lbts setTextAlignment:NSTextAlignmentLeft];
[lbts setFont:[UIFont systemFontOfSize:14]];
[scvback addSubview:lbts];
[lbts mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(viewxin.mas_bottom).offset(15);
make.centerX.equalTo(lbname);
}];
[scvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(lbts).offset(20);
}];
UIView *viewbottom = [[UIView alloc] init];
[viewbottom setBackgroundColor:[UIColor whiteColor]];
[self addSubview:viewbottom];
[viewbottom mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.equalTo(self);
make.top.equalTo(scvback.mas_bottom);
}];
[self drawBottonView:viewbottom];
}
return self;
}
-(void)drawXinView:(UIView *)view
{
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.offset(40*5);
}];
UIImage *imagexin = [UIImage imageNamed:@"fanwen_xin"];
UIImage *imagexinN = [Tools imageWithImageName:imagexin imageColor:RGBCOLOR(216, 216, 216)];
self.arrBtXin = [NSMutableArray new];
for(int i = 0 ; i < 5; i++)
{
UIButton *btxin = [[UIButton alloc] init];
[btxin setImage:imagexinN forState:UIControlStateNormal];
[btxin setImage:imagexin forState:UIControlStateSelected];
[view addSubview:btxin];
[btxin mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(view);
make.left.offset(40*i);
make.width.offset(40);
}];
[btxin setTag:i];
[btxin addTarget:self action:@selector(xinAction:) forControlEvents:UIControlEventTouchUpInside];
[self.arrBtXin addObject:btxin];
}
}
-(void)drawBottonView:(UIView *)view
{
UIView *viewline = [[UIView alloc] init];
[viewline setBackgroundColor:RGBCOLOR(238, 238, 238)];
[view addSubview:viewline];
[viewline mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(view);
make.height.offset(1);
}];
UIButton *btcopy = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH-168, 50)];
[btcopy setTitle:@"复制全文" forState:UIControlStateNormal];
[btcopy setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btcopy.titleLabel setFont:[UIFont systemFontOfSize:18]];
[btcopy.layer setMasksToBounds:YES];
[btcopy.layer setCornerRadius:16];
[view addSubview:btcopy];
[btcopy mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.top.offset(10);
make.height.offset(50);
make.right.equalTo(view).offset(-148);
}];
[btcopy setTag:0];
[btcopy addTarget:self action:@selector(bottomAction:) forControlEvents:UIControlEventTouchUpInside];
[Tools changedView:btcopy colors:MainJBColors startPoint:CGPointMake(0, 0) endPoint:CGPointMake(1, 0)];
UIButton *btchange = [[UIButton alloc] init];
[btchange setTitle:@"改写" forState:UIControlStateNormal];
[btchange setTitleColor:RGBCOLOR(61, 61, 61) forState:UIControlStateNormal];
[btchange.titleLabel setFont:[UIFont systemFontOfSize:18]];
[btchange.layer setMasksToBounds:YES];
[btchange.layer setCornerRadius:16];
[btchange.layer setBorderWidth:1];
[btchange.layer setBorderColor:RGBCOLOR(216, 216, 216).CGColor];
[view addSubview:btchange];
[btchange mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(btcopy.mas_right).offset(20);
make.top.height.equalTo(btcopy);
make.right.equalTo(view).offset(-20);
}];
[btchange setTag:1];
[btchange addTarget:self action:@selector(bottomAction:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)xinAction:(UIButton *)sender
{
for(int i = 0 ; i < self.arrBtXin.count;i++)
{
UIButton *bt = self.arrBtXin[i];
if(i<=sender.tag)
{
[bt setSelected:YES];
}
else
{
[bt setSelected:NO];
}
}
}
-(void)bottomAction:(UIButton *)sender
{
}
@end