Commit 170b6236 authored by Steven杜宇's avatar Steven杜宇

no message

parents df29bb15 da0981c1
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
044CC6292B8741AC0083FF76 /* YHSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC6282B8741AC0083FF76 /* YHSearchBar.swift */; }; 044CC6292B8741AC0083FF76 /* YHSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC6282B8741AC0083FF76 /* YHSearchBar.swift */; };
044CC62B2B876A230083FF76 /* YHSheetPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */; }; 044CC62B2B876A230083FF76 /* YHSheetPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */; };
044CC62D2B876C980083FF76 /* YHSheetPickerViewType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */; }; 044CC62D2B876C980083FF76 /* YHSheetPickerViewType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */; };
045DBF782B96FF5900992CAF /* YHImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045DBF772B96FF5900992CAF /* YHImageViewController.swift */; };
0468D4202B49320900CFB916 /* YHVerificationCodeLoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */; }; 0468D4202B49320900CFB916 /* YHVerificationCodeLoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */; };
0468D4222B493A5E00CFB916 /* YHPhoneMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */; }; 0468D4222B493A5E00CFB916 /* YHPhoneMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */; };
0468D4242B494BEA00CFB916 /* YHCodeResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */; }; 0468D4242B494BEA00CFB916 /* YHCodeResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */; };
...@@ -75,6 +76,11 @@ ...@@ -75,6 +76,11 @@
0468D4802B6914E600CFB916 /* YHSelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D47F2B6914E600CFB916 /* YHSelectCountryViewController.swift */; }; 0468D4802B6914E600CFB916 /* YHSelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D47F2B6914E600CFB916 /* YHSelectCountryViewController.swift */; };
0468D4822B6A2A8500CFB916 /* YHSelectCountryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4812B6A2A8500CFB916 /* YHSelectCountryViewModel.swift */; }; 0468D4822B6A2A8500CFB916 /* YHSelectCountryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4812B6A2A8500CFB916 /* YHSelectCountryViewModel.swift */; };
04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04754A942B96FF3D00F8ADCA /* UITextField+Extension.swift */; }; 04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04754A942B96FF3D00F8ADCA /* UITextField+Extension.swift */; };
0469750E2B96C0B900A0CB66 /* YHImageClipperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0469750D2B96C0B900A0CB66 /* YHImageClipperViewController.swift */; };
046975102B96C13700A0CB66 /* YHClipperView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0469750F2B96C13700A0CB66 /* YHClipperView.swift */; };
046975122B96C77000A0CB66 /* YHClipperButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046975112B96C77000A0CB66 /* YHClipperButton.swift */; };
046975162B96EB2200A0CB66 /* YHImageResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046975152B96EB2200A0CB66 /* YHImageResultViewController.swift */; };
046975182B96EEB200A0CB66 /* YHResultBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046975172B96EEB200A0CB66 /* YHResultBottomView.swift */; };
04808C062B4686510056D53C /* ATAuthSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 04808C042B4686510056D53C /* ATAuthSDK.bundle */; }; 04808C062B4686510056D53C /* ATAuthSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 04808C042B4686510056D53C /* ATAuthSDK.bundle */; };
04808C082B4686C10056D53C /* ATAuthSDK_D.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 04808C032B4686510056D53C /* ATAuthSDK_D.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 04808C082B4686C10056D53C /* ATAuthSDK_D.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 04808C032B4686510056D53C /* ATAuthSDK_D.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
049A48A82B49417300D0C641 /* YHAboutUsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049A48A72B49417300D0C641 /* YHAboutUsViewController.swift */; }; 049A48A82B49417300D0C641 /* YHAboutUsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049A48A72B49417300D0C641 /* YHAboutUsViewController.swift */; };
...@@ -159,6 +165,9 @@ ...@@ -159,6 +165,9 @@
A53026902B4E6F2700F35102 /* YHHomeCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */; }; A53026902B4E6F2700F35102 /* YHHomeCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */; };
A554A5002B95FB9100EA5973 /* YHMainInfoPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */; }; A554A5002B95FB9100EA5973 /* YHMainInfoPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */; };
A554A5022B96B9BC00EA5973 /* YHAcademicPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */; }; A554A5022B96B9BC00EA5973 /* YHAcademicPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */; };
A554A5042B96D04100EA5973 /* YHPreviewWorkExpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5032B96D04100EA5973 /* YHPreviewWorkExpViewController.swift */; };
A554A5062B96D17B00EA5973 /* YHWorkExpInfoPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5052B96D17B00EA5973 /* YHWorkExpInfoPreviewModel.swift */; };
A554A5082B96F55900EA5973 /* YHWorkExpDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5072B96F55900EA5973 /* YHWorkExpDataModel.swift */; };
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; }; A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; };
A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; }; A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; };
A5573EDB2B317C0000D98EC0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A5573EDA2B317C0000D98EC0 /* Assets.xcassets */; }; A5573EDB2B317C0000D98EC0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A5573EDA2B317C0000D98EC0 /* Assets.xcassets */; };
...@@ -351,6 +360,7 @@ ...@@ -351,6 +360,7 @@
044CC6282B8741AC0083FF76 /* YHSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSearchBar.swift; sourceTree = "<group>"; }; 044CC6282B8741AC0083FF76 /* YHSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSearchBar.swift; sourceTree = "<group>"; };
044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerView.swift; sourceTree = "<group>"; }; 044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerView.swift; sourceTree = "<group>"; };
044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerViewType.swift; sourceTree = "<group>"; }; 044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerViewType.swift; sourceTree = "<group>"; };
045DBF772B96FF5900992CAF /* YHImageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHImageViewController.swift; sourceTree = "<group>"; };
0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVerificationCodeLoginController.swift; sourceTree = "<group>"; }; 0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVerificationCodeLoginController.swift; sourceTree = "<group>"; };
0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPhoneMessageView.swift; sourceTree = "<group>"; }; 0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPhoneMessageView.swift; sourceTree = "<group>"; };
0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCodeResultViewController.swift; sourceTree = "<group>"; }; 0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCodeResultViewController.swift; sourceTree = "<group>"; };
...@@ -381,6 +391,11 @@ ...@@ -381,6 +391,11 @@
0468D47F2B6914E600CFB916 /* YHSelectCountryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSelectCountryViewController.swift; sourceTree = "<group>"; }; 0468D47F2B6914E600CFB916 /* YHSelectCountryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSelectCountryViewController.swift; sourceTree = "<group>"; };
0468D4812B6A2A8500CFB916 /* YHSelectCountryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSelectCountryViewModel.swift; sourceTree = "<group>"; }; 0468D4812B6A2A8500CFB916 /* YHSelectCountryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSelectCountryViewModel.swift; sourceTree = "<group>"; };
04754A942B96FF3D00F8ADCA /* UITextField+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Extension.swift"; sourceTree = "<group>"; }; 04754A942B96FF3D00F8ADCA /* UITextField+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Extension.swift"; sourceTree = "<group>"; };
0469750D2B96C0B900A0CB66 /* YHImageClipperViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHImageClipperViewController.swift; sourceTree = "<group>"; };
0469750F2B96C13700A0CB66 /* YHClipperView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHClipperView.swift; sourceTree = "<group>"; };
046975112B96C77000A0CB66 /* YHClipperButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHClipperButton.swift; sourceTree = "<group>"; };
046975152B96EB2200A0CB66 /* YHImageResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHImageResultViewController.swift; sourceTree = "<group>"; };
046975172B96EEB200A0CB66 /* YHResultBottomView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResultBottomView.swift; sourceTree = "<group>"; };
04808C032B4686510056D53C /* ATAuthSDK_D.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ATAuthSDK_D.framework; sourceTree = "<group>"; }; 04808C032B4686510056D53C /* ATAuthSDK_D.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ATAuthSDK_D.framework; sourceTree = "<group>"; };
04808C042B4686510056D53C /* ATAuthSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ATAuthSDK.bundle; sourceTree = "<group>"; }; 04808C042B4686510056D53C /* ATAuthSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ATAuthSDK.bundle; sourceTree = "<group>"; };
049A48A72B49417300D0C641 /* YHAboutUsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutUsViewController.swift; sourceTree = "<group>"; }; 049A48A72B49417300D0C641 /* YHAboutUsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutUsViewController.swift; sourceTree = "<group>"; };
...@@ -466,6 +481,9 @@ ...@@ -466,6 +481,9 @@
A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeCustomCell.swift; sourceTree = "<group>"; }; A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeCustomCell.swift; sourceTree = "<group>"; };
A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMainInfoPreviewModel.swift; sourceTree = "<group>"; }; A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMainInfoPreviewModel.swift; sourceTree = "<group>"; };
A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAcademicPreviewModel.swift; sourceTree = "<group>"; }; A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAcademicPreviewModel.swift; sourceTree = "<group>"; };
A554A5032B96D04100EA5973 /* YHPreviewWorkExpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewWorkExpViewController.swift; sourceTree = "<group>"; };
A554A5052B96D17B00EA5973 /* YHWorkExpInfoPreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHWorkExpInfoPreviewModel.swift; sourceTree = "<group>"; };
A554A5072B96F55900EA5973 /* YHWorkExpDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHWorkExpDataModel.swift; sourceTree = "<group>"; };
A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; }; A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; }; A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; };
A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
...@@ -924,6 +942,9 @@ ...@@ -924,6 +942,9 @@
04E86E562B848D5A00A35F4B /* YHWorkIntroductionViewController.swift */, 04E86E562B848D5A00A35F4B /* YHWorkIntroductionViewController.swift */,
04E86E582B84AD6200A35F4B /* YHWorkExampleViewController.swift */, 04E86E582B84AD6200A35F4B /* YHWorkExampleViewController.swift */,
04E86E692B87352600A35F4B /* YHCompanySelectViewController.swift */, 04E86E692B87352600A35F4B /* YHCompanySelectViewController.swift */,
0469750D2B96C0B900A0CB66 /* YHImageClipperViewController.swift */,
046975152B96EB2200A0CB66 /* YHImageResultViewController.swift */,
045DBF772B96FF5900992CAF /* YHImageViewController.swift */,
); );
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -948,6 +969,9 @@ ...@@ -948,6 +969,9 @@
04E86E3D2B834FC100A35F4B /* YHWorkExperienceTextItemView.swift */, 04E86E3D2B834FC100A35F4B /* YHWorkExperienceTextItemView.swift */,
04E86E5A2B84BF2000A35F4B /* YHWorkExampleTypeView.swift */, 04E86E5A2B84BF2000A35F4B /* YHWorkExampleTypeView.swift */,
04E86E5C2B84CC9700A35F4B /* YHWorkExampleMessageView.swift */, 04E86E5C2B84CC9700A35F4B /* YHWorkExampleMessageView.swift */,
0469750F2B96C13700A0CB66 /* YHClipperView.swift */,
046975112B96C77000A0CB66 /* YHClipperButton.swift */,
046975172B96EEB200A0CB66 /* YHResultBottomView.swift */,
); );
path = V; path = V;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1055,6 +1079,8 @@ ...@@ -1055,6 +1079,8 @@
A5B4A5842B9455F7003EFF8F /* YHPreviewForOtherInfoModel.swift */, A5B4A5842B9455F7003EFF8F /* YHPreviewForOtherInfoModel.swift */,
A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */, A554A4FF2B95FB9100EA5973 /* YHMainInfoPreviewModel.swift */,
A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */, A554A5012B96B9BC00EA5973 /* YHAcademicPreviewModel.swift */,
A554A5052B96D17B00EA5973 /* YHWorkExpInfoPreviewModel.swift */,
A554A5072B96F55900EA5973 /* YHWorkExpDataModel.swift */,
); );
path = M; path = M;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1082,6 +1108,7 @@ ...@@ -1082,6 +1108,7 @@
A5FD63E32B678AC000D1D9DA /* YHPreviewMainViewController.swift */, A5FD63E32B678AC000D1D9DA /* YHPreviewMainViewController.swift */,
A5FD63E52B67908000D1D9DA /* YHPreviewControllerHoldViewController.swift */, A5FD63E52B67908000D1D9DA /* YHPreviewControllerHoldViewController.swift */,
A5167B322B6A3A2D0084C08F /* YHPreviewBaseViewController.swift */, A5167B322B6A3A2D0084C08F /* YHPreviewBaseViewController.swift */,
A554A5032B96D04100EA5973 /* YHPreviewWorkExpViewController.swift */,
A5FD63E72B67D8EA00D1D9DA /* YHPreviewMainApplicantInfoViewController.swift */, A5FD63E72B67D8EA00D1D9DA /* YHPreviewMainApplicantInfoViewController.swift */,
A5FD63E92B67D95100D1D9DA /* YHPreviewFamilyMemberViewController.swift */, A5FD63E92B67D95100D1D9DA /* YHPreviewFamilyMemberViewController.swift */,
A5191F632B89E926001069F7 /* YHPreviewOtherInformationViewController.swift */, A5191F632B89E926001069F7 /* YHPreviewOtherInformationViewController.swift */,
...@@ -1843,12 +1870,14 @@ ...@@ -1843,12 +1870,14 @@
A5FD63C52B637EE000D1D9DA /* YHSubmitAllInfoCheckView.swift in Sources */, A5FD63C52B637EE000D1D9DA /* YHSubmitAllInfoCheckView.swift in Sources */,
A5ACE9442B4564F7002C94D2 /* Array+Extension.swift in Sources */, A5ACE9442B4564F7002C94D2 /* Array+Extension.swift in Sources */,
0468D4282B50D4AF00CFB916 /* YHPrivacyAlertView.swift in Sources */, 0468D4282B50D4AF00CFB916 /* YHPrivacyAlertView.swift in Sources */,
046975102B96C13700A0CB66 /* YHClipperView.swift in Sources */,
A58556C22B6C8412003746B2 /* YHScoreResultModel.swift in Sources */, A58556C22B6C8412003746B2 /* YHScoreResultModel.swift in Sources */,
0468D47A2B68A08600CFB916 /* YHAddressPickViewTableViewCell.swift in Sources */, 0468D47A2B68A08600CFB916 /* YHAddressPickViewTableViewCell.swift in Sources */,
0468D4342B56587B00CFB916 /* YHOSSManager.swift in Sources */, 0468D4342B56587B00CFB916 /* YHOSSManager.swift in Sources */,
A596C3A42B84D9100067BBB8 /* YHOtherInfoSessionView.swift in Sources */, A596C3A42B84D9100067BBB8 /* YHOtherInfoSessionView.swift in Sources */,
A5234E372B70802400A33433 /* YHBasicInfoCellModel.swift in Sources */, A5234E372B70802400A33433 /* YHBasicInfoCellModel.swift in Sources */,
A5C382D12B5FAAB300C5E65C /* YHContactItemModel.swift in Sources */, A5C382D12B5FAAB300C5E65C /* YHContactItemModel.swift in Sources */,
046975182B96EEB200A0CB66 /* YHResultBottomView.swift in Sources */,
A5FD63EF2B68902400D1D9DA /* YHPreviewInfoNameAndSubNameItemView.swift in Sources */, A5FD63EF2B68902400D1D9DA /* YHPreviewInfoNameAndSubNameItemView.swift in Sources */,
A5ACE9522B4564F7002C94D2 /* YHServiceCenterMainViewController.swift in Sources */, A5ACE9522B4564F7002C94D2 /* YHServiceCenterMainViewController.swift in Sources */,
A5C5B2FD2B55361700A7C5D1 /* YHBannerModel.swift in Sources */, A5C5B2FD2B55361700A7C5D1 /* YHBannerModel.swift in Sources */,
...@@ -1856,6 +1885,7 @@ ...@@ -1856,6 +1885,7 @@
A5234E332B6F9CB700A33433 /* YHBasicInfoFillModel.swift in Sources */, A5234E332B6F9CB700A33433 /* YHBasicInfoFillModel.swift in Sources */,
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */, A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */,
A596C39F2B84D9100067BBB8 /* YHOtherResidenceFillView.swift in Sources */, A596C39F2B84D9100067BBB8 /* YHOtherResidenceFillView.swift in Sources */,
A554A5082B96F55900EA5973 /* YHWorkExpDataModel.swift in Sources */,
A5C5B2F92B5515CE00A7C5D1 /* YHPageContentView.swift in Sources */, A5C5B2F92B5515CE00A7C5D1 /* YHPageContentView.swift in Sources */,
A5C382CA2B5E1F4C00C5E65C /* YHLoginTipsView.swift in Sources */, A5C382CA2B5E1F4C00C5E65C /* YHLoginTipsView.swift in Sources */,
A5FD63F12B68963200D1D9DA /* YHPreviewInfoHoldView.swift in Sources */, A5FD63F12B68963200D1D9DA /* YHPreviewInfoHoldView.swift in Sources */,
...@@ -1872,6 +1902,8 @@ ...@@ -1872,6 +1902,8 @@
04E86E322B81EA1000A35F4B /* YHWorkItemAddView.swift in Sources */, 04E86E322B81EA1000A35F4B /* YHWorkItemAddView.swift in Sources */,
A5C5B2FB2B5535DF00A7C5D1 /* YHHomeBannerView.swift in Sources */, A5C5B2FB2B5535DF00A7C5D1 /* YHHomeBannerView.swift in Sources */,
A5F78C822B68F39600EEA170 /* YHPreviewInfoCell.swift in Sources */, A5F78C822B68F39600EEA170 /* YHPreviewInfoCell.swift in Sources */,
046975122B96C77000A0CB66 /* YHClipperButton.swift in Sources */,
0469750E2B96C0B900A0CB66 /* YHImageClipperViewController.swift in Sources */,
A5ACE94B2B4564F7002C94D2 /* YHHUDRotatingImageView.swift in Sources */, A5ACE94B2B4564F7002C94D2 /* YHHUDRotatingImageView.swift in Sources */,
041B52DD2B60A889007EBCEB /* YHTest.swift in Sources */, 041B52DD2B60A889007EBCEB /* YHTest.swift in Sources */,
04E86E0F2B70DE9400A35F4B /* YHSpouseInfoContainerVC.swift in Sources */, 04E86E0F2B70DE9400A35F4B /* YHSpouseInfoContainerVC.swift in Sources */,
...@@ -1907,6 +1939,7 @@ ...@@ -1907,6 +1939,7 @@
04E86E2F2B81EA1000A35F4B /* YHWorkExperienceListViewController.swift in Sources */, 04E86E2F2B81EA1000A35F4B /* YHWorkExperienceListViewController.swift in Sources */,
042F88932B84AEF0008B60BD /* YHQuestionInfo.swift in Sources */, 042F88932B84AEF0008B60BD /* YHQuestionInfo.swift in Sources */,
A5ACE93F2B4564F7002C94D2 /* UIViewController+Extension.swift in Sources */, A5ACE93F2B4564F7002C94D2 /* UIViewController+Extension.swift in Sources */,
046975162B96EB2200A0CB66 /* YHImageResultViewController.swift in Sources */,
042FBBD62B67BDD500F9DE23 /* YHBrotherInfoVC.swift in Sources */, 042FBBD62B67BDD500F9DE23 /* YHBrotherInfoVC.swift in Sources */,
A5ACE9472B4564F7002C94D2 /* YHHUD.swift in Sources */, A5ACE9472B4564F7002C94D2 /* YHHUD.swift in Sources */,
A5ACE9412B4564F7002C94D2 /* Dictionary+Extension.swift in Sources */, A5ACE9412B4564F7002C94D2 /* Dictionary+Extension.swift in Sources */,
...@@ -1941,6 +1974,7 @@ ...@@ -1941,6 +1974,7 @@
A5ACE9552B4564F7002C94D2 /* YHTabBarViewController.swift in Sources */, A5ACE9552B4564F7002C94D2 /* YHTabBarViewController.swift in Sources */,
04E86E6C2B87374600A35F4B /* YHCompanyModel.swift in Sources */, 04E86E6C2B87374600A35F4B /* YHCompanyModel.swift in Sources */,
A5167B332B6A3A2D0084C08F /* YHPreviewBaseViewController.swift in Sources */, A5167B332B6A3A2D0084C08F /* YHPreviewBaseViewController.swift in Sources */,
A554A5042B96D04100EA5973 /* YHPreviewWorkExpViewController.swift in Sources */,
A5C5B3122B57B47D00A7C5D1 /* YHDavidCell0.swift in Sources */, A5C5B3122B57B47D00A7C5D1 /* YHDavidCell0.swift in Sources */,
A5FD63FA2B68D95700D1D9DA /* YHPersonInfoIdentityCardModel.swift in Sources */, A5FD63FA2B68D95700D1D9DA /* YHPersonInfoIdentityCardModel.swift in Sources */,
A50AB89B2B81E96E00C227DE /* YHOtherInfoFillModel.swift in Sources */, A50AB89B2B81E96E00C227DE /* YHOtherInfoFillModel.swift in Sources */,
...@@ -1968,6 +2002,7 @@ ...@@ -1968,6 +2002,7 @@
A5ACE9492B4564F7002C94D2 /* YHHUDSuccessView.swift in Sources */, A5ACE9492B4564F7002C94D2 /* YHHUDSuccessView.swift in Sources */,
A58556BA2B6BCF1A003746B2 /* YHPersonInfoFillStepModel.swift in Sources */, A58556BA2B6BCF1A003746B2 /* YHPersonInfoFillStepModel.swift in Sources */,
A5FD63D42B65F99500D1D9DA /* YHScoreItemCell.swift in Sources */, A5FD63D42B65F99500D1D9DA /* YHScoreItemCell.swift in Sources */,
045DBF782B96FF5900992CAF /* YHImageViewController.swift in Sources */,
A5ACE9432B4564F7002C94D2 /* UILable+Extension.swift in Sources */, A5ACE9432B4564F7002C94D2 /* UILable+Extension.swift in Sources */,
A596C3A02B84D9100067BBB8 /* YHOtherInfoFillCell.swift in Sources */, A596C3A02B84D9100067BBB8 /* YHOtherInfoFillCell.swift in Sources */,
A5ACE9382B4564F7002C94D2 /* UIApplication+Extension.swift in Sources */, A5ACE9382B4564F7002C94D2 /* UIApplication+Extension.swift in Sources */,
...@@ -2001,6 +2036,7 @@ ...@@ -2001,6 +2036,7 @@
A5C5B3292B57CCBE00A7C5D1 /* YHDavidCell4.swift in Sources */, A5C5B3292B57CCBE00A7C5D1 /* YHDavidCell4.swift in Sources */,
049A48A82B49417300D0C641 /* YHAboutUsViewController.swift in Sources */, 049A48A82B49417300D0C641 /* YHAboutUsViewController.swift in Sources */,
A5ACE9582B4564F7002C94D2 /* YHNoDataTipView.swift in Sources */, A5ACE9582B4564F7002C94D2 /* YHNoDataTipView.swift in Sources */,
A554A5062B96D17B00EA5973 /* YHWorkExpInfoPreviewModel.swift in Sources */,
04E86E592B84AD6200A35F4B /* YHWorkExampleViewController.swift in Sources */, 04E86E592B84AD6200A35F4B /* YHWorkExampleViewController.swift in Sources */,
042FBBBB2B62806D00F9DE23 /* YHCertificateInfoController.swift in Sources */, 042FBBBB2B62806D00F9DE23 /* YHCertificateInfoController.swift in Sources */,
044CC6272B8740340083FF76 /* YHCollegeNameCell.swift in Sources */, 044CC6272B8740340083FF76 /* YHCollegeNameCell.swift in Sources */,
......
...@@ -233,7 +233,7 @@ extension YHInformationPerfectListVC { ...@@ -233,7 +233,7 @@ extension YHInformationPerfectListVC {
make.height.equalTo(48) make.height.equalTo(48)
} }
submitBtn.layoutIfNeeded() submitBtn.layoutIfNeeded()
submitBtn.backgroundGradient() submitBtn.addYinHeGradualLayer()
submitBtn.isHidden = hasSubmitFlag submitBtn.isHidden = hasSubmitFlag
...@@ -285,7 +285,7 @@ extension YHInformationPerfectListVC { ...@@ -285,7 +285,7 @@ extension YHInformationPerfectListVC {
make.left.equalTo(submitHoldView.snp.centerX).offset(6) make.left.equalTo(submitHoldView.snp.centerX).offset(6)
} }
infoButton.layoutIfNeeded() infoButton.layoutIfNeeded()
infoButton.backgroundGradient() infoButton.addYinHeGradualLayer()
homeTableView.delegate = self homeTableView.delegate = self
homeTableView.dataSource = self homeTableView.dataSource = self
......
...@@ -72,7 +72,7 @@ private extension YHBasicInfoFillBottomView { ...@@ -72,7 +72,7 @@ private extension YHBasicInfoFillBottomView {
} }
nextButton.layoutIfNeeded() nextButton.layoutIfNeeded()
nextButton.backgroundGradient() nextButton.addYinHeGradualLayer()
} }
@objc func save() { @objc func save() {
......
...@@ -66,7 +66,7 @@ class YHBottomNextView: UIView { ...@@ -66,7 +66,7 @@ class YHBottomNextView: UIView {
nextButton.layoutIfNeeded() nextButton.layoutIfNeeded()
nextButton.backgroundGradient() nextButton.addYinHeGradualLayer()
} }
......
...@@ -173,8 +173,6 @@ class YHImagePickerView: UIView { ...@@ -173,8 +173,6 @@ class YHImagePickerView: UIView {
imagePicker.delegate = self imagePicker.delegate = self
//设置来源 //设置来源
imagePicker.sourceType = .camera imagePicker.sourceType = .camera
//允许编辑
imagePicker.allowsEditing = true
//打开相机 //打开相机
UIViewController.current?.present(imagePicker, animated: true, completion: { () -> Void in UIViewController.current?.present(imagePicker, animated: true, completion: { () -> Void in
...@@ -190,7 +188,6 @@ class YHImagePickerView: UIView { ...@@ -190,7 +188,6 @@ class YHImagePickerView: UIView {
let imagePicker = UIImagePickerController() let imagePicker = UIImagePickerController()
imagePicker.delegate = self imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
// 这一句,开始调用图库 // 这一句,开始调用图库
UIViewController.current?.present(imagePicker,animated: true) UIViewController.current?.present(imagePicker,animated: true)
} }
...@@ -304,7 +301,7 @@ extension YHImagePickerView: UINavigationControllerDelegate, UIImagePickerContro ...@@ -304,7 +301,7 @@ extension YHImagePickerView: UINavigationControllerDelegate, UIImagePickerContro
"businessCode": "4001001" "businessCode": "4001001"
] ]
// 创建MultipartFormData对象 // 创建MultipartFormData对象
var multipartFormData = MultipartFormData() let multipartFormData = MultipartFormData()
// 将图片添加到multipartFormData中 // 将图片添加到multipartFormData中
multipartFormData.append(imageData, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg") multipartFormData.append(imageData, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
......
...@@ -279,10 +279,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell { ...@@ -279,10 +279,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell {
@objc func frontImageClick() { @objc func frontImageClick() {
if type == .identity { if type == .identity {
if viewModel.mainModel.certificates.cn_identity_card.img_front.count != 0 { if viewModel.mainModel.certificates.cn_identity_card.img_front.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.cn_identity_card.img_front
UIViewController.current?.navigationController?.pushViewController(vc)
return return
} }
} else { } else {
if viewModel.mainModel.certificates.hk_macao_pass.img_front.count != 0 { if viewModel.mainModel.certificates.hk_macao_pass.img_front.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.hk_macao_pass.img_front
UIViewController.current?.navigationController?.pushViewController(vc)
return return
} }
} }
...@@ -334,10 +340,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell { ...@@ -334,10 +340,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell {
@objc func backSurfaceImageClick() { @objc func backSurfaceImageClick() {
if type == .identity { if type == .identity {
if viewModel.mainModel.certificates.cn_identity_card.img_back.count != 0 { if viewModel.mainModel.certificates.cn_identity_card.img_back.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.cn_identity_card.img_back
UIViewController.current?.navigationController?.pushViewController(vc)
return return
} }
} else { } else {
if viewModel.mainModel.certificates.hk_macao_pass.img_back.count != 0 { if viewModel.mainModel.certificates.hk_macao_pass.img_back.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.hk_macao_pass.img_back
UIViewController.current?.navigationController?.pushViewController(vc)
return return
} }
} }
......
...@@ -75,7 +75,8 @@ class YHPreviewControllerHoldViewController: UIViewController { ...@@ -75,7 +75,8 @@ class YHPreviewControllerHoldViewController: UIViewController {
arrItemVCs.append(vc) arrItemVCs.append(vc)
} }
do { do {
let vc = YHPreviewFamilyMemberViewController() //工作经验
let vc = YHPreviewWorkExpViewController()
arrItemVCs.append(vc) arrItemVCs.append(vc)
} }
do { do {
......
...@@ -212,20 +212,6 @@ extension YHPreviewMainViewController { ...@@ -212,20 +212,6 @@ extension YHPreviewMainViewController {
make.right.equalTo(-20.5) make.right.equalTo(-20.5)
} }
} }
// private func loadFirstItem() {
// DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// self.homeTableView.es.stopPullToRefresh(ignoreDate: true,ignoreFooter: false)
// self.homeTableView.reloadData()
// }
// }
//
// private func loadFakeData() {
// DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// self.homeTableView.es.stopLoadingMore()
// self.homeTableView.reloadData()
// }
// }
} }
// MARK: - UITableViewDelegate 和 UITableViewDataSource // MARK: - UITableViewDelegate 和 UITableViewDataSource
......
//
// YHPreviewWorkExpViewController.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
/*
*工作经验 预览
*/
class YHPreviewWorkExpViewController: YHPreviewBaseViewController {
private let previewVM : YHPreviewViewModel = YHPreviewViewModel()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
loadData()
}
}
private extension YHPreviewWorkExpViewController {
func setupUI() {
self.homeTableView.register(YHPreviewInfoCell.self,forCellReuseIdentifier: YHPreviewInfoCell.cellReuseIdentifier)
self.homeTableView.reloadData()
}
func loadData() {
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") {
previewVM.getPreviewForWorkExpInfo(params: ["order_id" : orderID]) { success, error in
if success == true {
} else {
}
self.homeTableView.reloadData()
}
} else {
printLog("error : orderID 为空")
}
}
}
// MARK: - UITableViewDelegate 和 UITableViewDataSource
extension YHPreviewWorkExpViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return previewVM.arrDataForWorkExpInfo.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHPreviewInfoCell.self)
cell.selectionStyle = .none
cell.model = previewVM.arrDataForWorkExpInfo[indexPath.row]
return cell
}
}
...@@ -14,10 +14,9 @@ enum YHPreviewInfoSessionModelType: Int { ...@@ -14,10 +14,9 @@ enum YHPreviewInfoSessionModelType: Int {
case idCardInfoType = 1 //1-证件信息 类型 case idCardInfoType = 1 //1-证件信息 类型
case idPictureType = 2 //2-证件照片 类型 case idPictureType = 2 //2-证件照片 类型
case questionAndAnswer = 3 //3-问答 类型 case questionAndAnswer = 3 //3-问答 类型
case workExp = 4 //4-工作经验
} }
struct YHPreviewInfoSessionModel { struct YHPreviewInfoSessionModel {
var cellType : YHPreviewInfoSessionModelType = .countryInfoType var cellType : YHPreviewInfoSessionModelType = .countryInfoType
var cellTitle : String = "" var cellTitle : String = ""
......
//
// YHWorkExpDataModel.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
struct YHWorkExpDataModel {
var title : String
var data : [Any] = []
}
//
// WorkExpInfoPreviewModel.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHWorkExpInfoPreviewModel: SmartCodable {
var list : [WorkExpInfoPreviewDetailModel]?
var count : Int = 0
required init() {
}
}
class WorkExpInfoPreviewDetailModel: SmartCodable {
var id: Int = 0
var order_id: Int = 0
var company_name: String = ""
var is_famous_enterprise: Int = 0
var duty: String = ""
var entry_time: String = ""
var departure_time: String = ""
var industry: String = ""
var location: AddressPreviewModel?
var location_aboard: Int = 0
var professional_level: Int = 0
var professional_other: String = ""
var position: String = ""
var remark: String = ""
var old_id: Int = 0
var created_at: String = ""
var updated_at: String = ""
var is_show: Int = 1 //1.保存会显示到列表上
var deleted_at: String = ""
var operator_name: String = ""
var operator_english_name: String = ""
var operator_id: Int = 0
var work_certificate: String = ""
var executives_certificate: String = ""
var is_executives: Int = 0
var wduty: String = ""
var highlights: String = ""
var file: [WorkExpFilePreviewModel]?
var not_need_upload_file: Int = 0
var company_member_total: Int = 0
var administrative_level: Int = 0
var company_manage_total: Int = 0
var top_manager_start_at: String = ""
var top_manager_end_at: String = ""
var master_of_important_project: Int = 0
var match_listing: Int = 0
var is_synthetic: Int = 0
var step: Int = 0
var create_from_appid: Int = 0
var update_from_appid: Int = 0
var international_work_experience: Int = 0
var turnover: Int = 0
var business_nature: String = ""
var company_website: String = ""
var company_introduce: String = ""
var business_remark: String = ""
var is_project_introduction: Int = 0
var customer_center_id: Int = 0
var projects: [ProjectPreviewModel]?
required init() {
}
}
class WorkExpFilePreviewModel: SmartCodable {
var fileName: String = ""
var fileUrl: String = ""
required init() {
}
}
class AddressPreviewModel: SmartCodable {
var area: [String] = []
var country: String = ""
var details: String = ""
var foreign: String = ""
required init() {
}
}
class ProjectPreviewModel: SmartCodable {
var id: Int = 0
var order_id: Int = 0
var work_id: Int = 0
var project_name: String = ""
var project_start_time: String = ""
var project_end_time: String = ""
var project_highlights: String = ""
var update_from_appid: Int = 0
var create_from_appid: Int = 0
var customer_center_id: Int = 0
var created_at: String = ""
var updated_at: String = ""
var deleted_at: String = ""
required init() {
}
}
...@@ -61,7 +61,6 @@ extension YHPreviewInfoCell { ...@@ -61,7 +61,6 @@ extension YHPreviewInfoCell {
} }
} }
else if model?.cellType == .idCardInfoType { else if model?.cellType == .idCardInfoType {
guard let model = model else { return } guard let model = model else { return }
let view = YHPreviewInfoCertificateInformationItemsView(frame: .zero) let view = YHPreviewInfoCertificateInformationItemsView(frame: .zero)
view.dataModel = model view.dataModel = model
...@@ -71,8 +70,6 @@ extension YHPreviewInfoCell { ...@@ -71,8 +70,6 @@ extension YHPreviewInfoCell {
} }
} }
else if model?.cellType == .idPictureType { else if model?.cellType == .idPictureType {
guard let model = model else { return } guard let model = model else { return }
let view = YHPreviewInfoCertificatePictureItemsView(frame: .zero) let view = YHPreviewInfoCertificatePictureItemsView(frame: .zero)
view.dataModel = model view.dataModel = model
...@@ -81,9 +78,7 @@ extension YHPreviewInfoCell { ...@@ -81,9 +78,7 @@ extension YHPreviewInfoCell {
make.edges.equalTo(0) make.edges.equalTo(0)
} }
} }
else if model?.cellType == .questionAndAnswer { else if model?.cellType == .questionAndAnswer {
guard let model = model else { return } guard let model = model else { return }
let view = YHPreviewInfoQuestionAndAnswerItemsView(frame: .zero) let view = YHPreviewInfoQuestionAndAnswerItemsView(frame: .zero)
view.dataModel = model view.dataModel = model
...@@ -92,7 +87,9 @@ extension YHPreviewInfoCell { ...@@ -92,7 +87,9 @@ extension YHPreviewInfoCell {
make.edges.equalTo(0) make.edges.equalTo(0)
} }
} }
else if model?.cellType == .workExp {
//工作经验
}
else { else {
} }
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
import UIKit import UIKit
class YHPreviewViewModel: YHBaseViewModel { class YHPreviewViewModel: YHBaseViewModel {
//工作经验
var workExpInfoPreviewModel : YHWorkExpInfoPreviewModel?
var arrDataForWorkExpInfo : [YHPreviewInfoSessionModel] = []
//学历/专业资格 //学历/专业资格
var academicInfoPreviewModel : YHAcademicPreviewModel? var academicInfoPreviewModel : YHAcademicPreviewModel?
var arrDataForAcademicInfo : [YHPreviewInfoSessionModel] = [] var arrDataForAcademicInfo : [YHPreviewInfoSessionModel] = []
...@@ -37,6 +41,33 @@ class YHPreviewViewModel: YHBaseViewModel { ...@@ -37,6 +41,33 @@ class YHPreviewViewModel: YHBaseViewModel {
extension YHPreviewViewModel { extension YHPreviewViewModel {
//工作经验 预览
func getPreviewForWorkExpInfo(params:[String:Any], callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Preview.previewWorkExpInfoApi
let _ = YHNetRequest.getRequest(url: strUrl, params:params) {[weak self] json, code in
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
let dic = json.data as? [AnyHashable : Any]
guard let resultModel = YHWorkExpInfoPreviewModel.deserialize(dict: dic) else {
let error = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(false,error)
return
}
workExpInfoPreviewModel = resultModel
installDataForWorkExpInfo()
callBackBlock(true,nil)
} else {
let error = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false,error)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
//获取学历/专业 预览数据 //获取学历/专业 预览数据
func getPreviewForAcademicInfo(params:[String:Any], callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) { func getPreviewForAcademicInfo(params:[String:Any], callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Preview.previewAcademicAndProfessionalQualificationInfoApi let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Preview.previewAcademicAndProfessionalQualificationInfoApi
...@@ -182,6 +213,83 @@ extension YHPreviewViewModel { ...@@ -182,6 +213,83 @@ extension YHPreviewViewModel {
} }
private extension YHPreviewViewModel { private extension YHPreviewViewModel {
//组装 工作经验 数据
func installDataForWorkExpInfo() {
guard let model0 = workExpInfoPreviewModel else { return}
arrDataForWorkExpInfo.removeAll()
if let list = model0.list,list.isEmpty == false {
for(index,model) in list.enumerated() {
var arr1 : [YHPreviewQuestionAndAnswerModel] = []
do {
//1.基本信息
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "用人单位:", answer: model.company_name)
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "用人单位性质:", answer: model.industry)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "用人单位介绍:", answer: model.company_introduce)
let tmp4 = YHPreviewQuestionAndAnswerModel(question: "用人单位官网:", answer: model.company_website)
var title = "-"
if let item = model.location {
title = item.country + "-" + item.details
}
let tmp5 = YHPreviewQuestionAndAnswerModel(question: "工作地点:", answer: title)
let tmp6 = YHPreviewQuestionAndAnswerModel(question: "职位:", answer: model.position)
let tmp7 = YHPreviewQuestionAndAnswerModel(question: "入职年月:", answer: model.entry_time)
let tmp8 = YHPreviewQuestionAndAnswerModel(question: "离职年月:", answer: model.departure_time)
let tmp9 = YHPreviewQuestionAndAnswerModel(question: "工作证明文件:", answer: model.work_certificate)
let tmp10 = YHPreviewQuestionAndAnswerModel(question: "职责性质:", answer: model.duty)
title = model.international_work_experience == 0 ? "否" : "是"
let tmp11 = YHPreviewQuestionAndAnswerModel(question: "相关工作是否属国际工作经验:", answer:title)
let tmp12 = YHPreviewQuestionAndAnswerModel(question: "企业人数规模:", answer:String(model.company_member_total))
let tmp13 = YHPreviewQuestionAndAnswerModel(question: "行政架构层级:", answer:String(model.administrative_level))
let tmp14 = YHPreviewQuestionAndAnswerModel(question: "下属管理人数:", answer:String(model.company_manage_total))
let tmp15 = YHPreviewQuestionAndAnswerModel(question: "公司营业额/港元(近一年):", answer:String(model.turnover))
let tmp16 = YHPreviewQuestionAndAnswerModel(question: "职业水平类别:", answer:String(model.professional_level))
arr1.append(contentsOf: [tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8,tmp9,tmp10,tmp11,tmp12,tmp13,tmp14,tmp15,tmp16])
}
let dataModel1 = YHWorkExpDataModel(title: "", data: arr1)
var arr2 : [YHPreviewQuestionAndAnswerModel] = []
do {
//2.
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "公司业务性质/范畴/所属行业:", answer:model.business_nature)
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "工作职责:", answer:model.wduty)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "工作亮点:", answer:model.highlights)
arr2.append(contentsOf: [tmp1,tmp2,tmp3])
}
let dataModel2 = YHWorkExpDataModel(title: "", data: arr2)
var arr3 : [Any] = []
do {
//3.项目介绍
if let items = model.projects,items.isEmpty == false {
for(index,item) in items.enumerated() {
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "项目名称", answer:item.project_name)
let title = item.project_start_time + "-" + item.project_end_time
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "项目时间", answer:title)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "项目业绩/亮点", answer:item.project_highlights)
var arrT : [YHPreviewQuestionAndAnswerModel] = [tmp1,tmp2,tmp3]
let dataModelTemp = YHWorkExpDataModel(title: "", data: arrT)
arr3.append(dataModelTemp)
}
}
}
do {
//4.简历/工作总结:
if let items = model.file,items.isEmpty == false {
var arrT : [Any] = []
for(index,item) in items.enumerated() {
arrT.append(item)
}
}
}
}
}
}
//组装 学历/专业资格 数据 //组装 学历/专业资格 数据
func installDataForAcademicInfo() { func installDataForAcademicInfo() {
......
//
// YHImageClipperViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
/*
let clipperVC = YHImageClipperViewController()
clipperVC.setBaseImg(image, resultImgSize: clippedImgSize!, type: clipperType)
clipperVC.cancelClippedHandler = {
}
clipperVC.successClippedHandler = {[weak self]img in
if self?.clippedImageHandler != nil{
self?.clippedImageHandler!(img)
}
}
self.pushViewController(clipperVC, animated: true)
*/
import UIKit
class YHImageClipperViewController: YHBaseViewController {
typealias CancelClippedHandlerBlock = ()->Void
typealias SuccessClippedHandlerBlock = (_ content: String) -> Void
//MARK Public
public var cancelClippedHandler:CancelClippedHandlerBlock?
public var successClippedHandler:SuccessClippedHandlerBlock?
public func setBaseImg(_ baseImg: UIImage, resultImgSize: CGSize, type: YHClipperType) {
clipperView = YHClipperView(frame: CGRect(x: 0, y: (isIphoneX() ? 88:64), width: KScreenWidth, height: KScreenHeight - k_Height_safeAreaInsetsBottom() - 54 - (isIphoneX() ? 88:64)))
clipperView?.resultImgSize = resultImgSize
clipperView?.baseImg = baseImg
clipperView?.type = type
self.view.addSubview(clipperView!)
}
//MARK Private
private var clipperView: YHClipperView?
private var cannalButton: YHClipperButton!
private var backImageButton: YHClipperButton!
private var sureButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
self.hidesBottomBarWhenPushed = true
if #available(iOS 11.0, *) {
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
// Do any additional setup after loading the view.
setView()
}
func setView() {
sureButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.backgroundColor = UIColor(hex: 0x2274ee)
button.contentHorizontalAlignment = .center
button.setTitle("确认", for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius6
button.clipsToBounds = true
button.addTarget(self, action: #selector(sureBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(sureButton)
sureButton.snp.makeConstraints { make in
make.right.equalTo(-16)
make.bottom.equalTo(-10 - k_Height_safeAreaInsetsBottom())
make.height.equalTo(44)
make.width.equalTo(93)
}
cannalButton = {
let button = YHClipperButton()
button.setContent("image_clipper_cannal", "取消")
button.addTarget(self, action: #selector(cannalBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(cannalButton)
cannalButton.snp.makeConstraints { make in
make.centerY.equalTo(sureButton.snp.centerY)
make.left.equalTo(30)
make.height.equalTo(44)
make.width.equalTo(30)
}
backImageButton = {
let button = YHClipperButton()
button.setContent("image_clipper_back", "复原")
button.addTarget(self, action: #selector(backImageBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(backImageButton)
backImageButton.snp.makeConstraints { make in
make.centerY.equalTo(sureButton.snp.centerY)
make.left.equalTo(80)
make.height.equalTo(44)
make.width.equalTo(30)
}
}
@objc private func cannalBtnClick() {
if cancelClippedHandler != nil {
cancelClippedHandler!()
}
self.navigationController?.popViewController()
}
@objc private func backImageBtnClick() {
// if cancelClippedHandler != nil {
// cancelClippedHandler!()
// }
}
@objc private func sureBtnClick() {
let clippedImg = self.clipperView?.clipImg()
let vc = YHImageResultViewController()
vc.img = clippedImg
vc.successHandlerBlock = { [weak self] result in
guard let self = self else { return }
if successClippedHandler != nil {
successClippedHandler!(result)
}
}
self.navigationController?.pushViewController(vc)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.isNavigationBarHidden = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//
// YHImageResultViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHImageResultViewController: YHBaseViewController {
typealias SuccessHandlerBlock = (_ relult: String) -> Void
var successHandlerBlock: SuccessHandlerBlock?
var resultView: UIImageView!
var bottomView: YHResultBottomView!
var img: UIImage!
var viewModel: YHWorkExperienceViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHWorkExperienceViewModel()
gk_navTitle = "照片"
setView()
// Do any additional setup after loading the view.
}
func setView() {
resultView = {
let step = UIImageView()
step.contentMode = .scaleAspectFit
step.image = img
return step
}()
view.addSubview(resultView)
resultView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
bottomView = {
let bottom = YHResultBottomView()
bottom.nextblock = {[weak self] in
guard let self = self else { return }
YHHUD.show(.progress(message: ""))
self.viewModel.uploadImage(self.img) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
if let block = self.successHandlerBlock {
block(model?.content ?? "")
let mineVC = YHWorkExperienceViewController()
var targetVC : UIViewController!
for controller in self.navigationController!.viewControllers {
if controller.isKind(of: mineVC.classForCoder) {
targetVC = controller
}
}
if targetVC != nil {
self.navigationController?.popToViewController(targetVC, animated: true)
}
}
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
}
}
return bottom
}()
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
}
}
}
//
// YHImageViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHImageViewController: YHBaseViewController {
var resultView: UIImageView!
var resultButton: UIButton!
var imgString: String!
var viewModel: YHWorkExperienceViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHWorkExperienceViewModel()
view.backgroundColor = .black
self.hidesBottomBarWhenPushed = true
if #available(iOS 11.0, *) {
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
setView()
getData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.isNavigationBarHidden = false
}
func setView() {
resultView = {
let step = UIImageView()
step.contentMode = .scaleAspectFit
return step
}()
view.addSubview(resultView)
resultView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
resultButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(back), for: .touchUpInside)
return button
}()
view.addSubview(resultButton)
resultButton.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
}
@objc func back() {
self.navigationController?.popViewController()
}
func getData() {
self.viewModel.getPublicImageUrl(imgString) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.resultView.kf.setImage(with: URL(string: success))
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
...@@ -238,27 +238,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo ...@@ -238,27 +238,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { return } guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in YHImagePickerView.show() {[weak self] image in
guard let self = self else { return } guard let self = self else { return }
YHHUD.show(.progress(message: "")) let clipperVC = YHImageClipperViewController()
self.viewModel.uploadImage(image) {[weak self] success, error in clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
guard let self = self else { return } clipperVC.successClippedHandler = {[weak self] result in
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
guard let url = success else { return } self.viewModel.mainModel.wduty = result
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.viewModel.mainModel.wduty = model?.content ?? ""
cell.dataSource = viewModel.mainModel.wduty cell.dataSource = viewModel.mainModel.wduty
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
} }
self.navigationController?.pushViewController(clipperVC, animated: true)
} }
} }
return cell return cell
...@@ -294,27 +281,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo ...@@ -294,27 +281,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { return } guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in YHImagePickerView.show() {[weak self] image in
guard let self = self else { return } guard let self = self else { return }
YHHUD.show(.progress(message: "")) let clipperVC = YHImageClipperViewController()
self.viewModel.uploadImage(image) {[weak self] success, error in clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
guard let self = self else { return } clipperVC.successClippedHandler = {[weak self] result in
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
guard let url = success else { return } self.viewModel.mainModel.highlights = result
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.viewModel.mainModel.highlights = model?.content ?? ""
cell.dataSource = viewModel.mainModel.highlights cell.dataSource = viewModel.mainModel.highlights
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
} }
self.navigationController?.pushViewController(clipperVC, animated: true)
} }
} }
return cell return cell
...@@ -455,6 +429,10 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo ...@@ -455,6 +429,10 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
return return
} }
} }
} else {
let vc = YHImageViewController()
vc.imgString = model.fileUrl
UIViewController.current?.navigationController?.pushViewController(vc)
} }
} }
return cell return cell
......
...@@ -205,27 +205,14 @@ class YHWorkIntroductionViewController: YHBaseViewController { ...@@ -205,27 +205,14 @@ class YHWorkIntroductionViewController: YHBaseViewController {
guard let self = self else { return } guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in YHImagePickerView.show() {[weak self] image in
guard let self = self else { return } guard let self = self else { return }
YHHUD.show(.progress(message: "加载中")) let clipperVC = YHImageClipperViewController()
self.viewModel.uploadImage(image) {[weak self] success, error in clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return } guard let self = self else { return }
guard let url = success else { return } self.dataSource.project_highlights = result
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in self.messageTextField.text = result
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.dataSource.project_highlights = model?.content
self.messageTextField.text = model?.content
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
} }
self.navigationController?.pushViewController(clipperVC, animated: true)
} }
} }
return view return view
......
//
// YHClipperButton.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHClipperButton: UIButton {
var topImageView: UIImageView!
var bottomTitleLabel: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
topImageView = {
let view = UIImageView()
return view
}()
addSubview(topImageView)
topImageView.snp.makeConstraints { make in
make.top.centerX.equalToSuperview()
make.width.height.equalTo(21)
}
bottomTitleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_B(ofSize: 11)
label.textAlignment = .center
label.textColor = UIColor.white
return label
}()
addSubview(bottomTitleLabel)
bottomTitleLabel.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(15)
}
}
func setContent(_ image: String, _ title: String) {
bottomTitleLabel.text = title
topImageView.image = UIImage(named: image)
}
/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
// Drawing code
}
*/
}
//
// YHClipperView.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
enum YHClipperType {
case Move
case Stay
}
class YHClipperView: UIView {
public var resultImgSize:CGSize?{
didSet{
self.setClipperView()
}
}
public var type: YHClipperType = .Move
public var baseImg: UIImage?{
didSet{
var width = baseImg?.size.width ?? 0
var height = baseImg?.size.height ?? 0
if width != self.frame.size.width {
width = self.frame.size.width
}
height = (baseImg?.size.height ?? 0)! / (baseImg?.size.width ?? 0)! * width
if height < (self.clipperView?.frame.size.height ?? 0)! {
height = (self.clipperView?.frame.size.height ?? 0)!
}
width = (baseImg?.size.width ?? 0)! / (baseImg?.size.height ?? 0)! * height
let img = baseImg?.scaledToSize(newSize: CGSize(width: width, height: height), withScale: false)
self.baseImgView?.image = img
self.baseImgView?.frame = CGRect(x: 0, y: 0, width: (img?.size.width)!, height: (img?.size.height)!)
correctBackImgView()
}
}
private let minWidth:CGFloat = 60
private var clipperView: UIImageView?
private lazy var baseImgView: UIImageView? = {
let baseImgView = UIImageView()
self.addSubview(baseImgView)
self.sendSubviewToBack(baseImgView)
return baseImgView
}()
private lazy var fillLayer: CAShapeLayer? = {
let fillLayer = CAShapeLayer()
fillLayer.fillRule = CAShapeLayerFillRule.evenOdd
fillLayer.fillColor = UIColor.black.cgColor
fillLayer.opacity = 0.5
self.layer.addSublayer(fillLayer)
return fillLayer
}()
private var panTouch:CGPoint?
private var scaleDistance:CGFloat = 0 //缩放距离
override init(frame: CGRect) {
super.init(frame: frame)
loadSubViews()
}
//MARK Public
public func clipImg() -> UIImage {
let scale = UIScreen.main.scale * (self.baseImgView?.image?.size.width)!/(self.baseImgView?.frame.size.width)!
let rect = self.convert((self.clipperView?.frame)!, to: self.baseImgView)
let rect2 = CGRect(x: rect.origin.x * scale, y: rect.origin.y * scale, width: rect.size.width * scale, height: rect.size.height * scale)
let cgImg = self.baseImgView?.image?.cgImage?.cropping(to: rect2)
let clippedImg = UIImage.init(cgImage: cgImg!)
return clippedImg
}
private func loadSubViews() {
self.layer.contentsGravity = CALayerContentsGravity.resizeAspect
}
private func setClipperView() {
let kscWidth = UIScreen.main.bounds.size.width
let kscHeight = UIScreen.main.bounds.size.height - 64
var width = kscWidth
var height = kscHeight
if (self.resultImgSize?.width)! > ((self.resultImgSize?.height ?? 0)! / height * width) {
height = kscWidth / (self.resultImgSize?.width ?? 0)! * (self.resultImgSize?.height ?? 0)!
}else{
width = kscHeight / (self.resultImgSize?.height ?? 0)! * (self.resultImgSize?.width ?? 0)!
}
let y = (kscHeight - height)/2
let x = (kscWidth - width)/2
clipperView = UIImageView(frame: CGRect(x: x, y: y, width: width, height: height))
clipperView?.layer.borderColor = UIColor.white.cgColor
clipperView?.layer.borderWidth = 2
self.addSubview(clipperView!)
correctFillLayer()
}
//MARK Touches (注意问题::::)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let allTouches = event?.allTouches
switch allTouches?.count {
case 1?:
panTouch = allTouches?.first?.location(in: self)
break
default:
break
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
self.willChangeValue(forKey: "crop")
let allTouches = event?.allTouches
switch allTouches?.count {
case 1?:
let touchCurrent = allTouches?.first?.location(in: self)
let x = (touchCurrent?.x ?? 0)! - (panTouch?.x ?? 0)!
let y = (touchCurrent?.y ?? 0)! - (panTouch?.y ?? 0)!
switch type {
case .Move:
self.baseImgView?.center = CGPoint(x: (self.baseImgView?.center.x ?? 0)! + x, y: (self.baseImgView?.center.y ?? 0)! + y)
break
case .Stay:
self.clipperView?.center = CGPoint(x: (self.clipperView?.center.x ?? 0)! + x, y: (self.clipperView?.center.y ?? 0)! + y)
break
}
panTouch = touchCurrent
break
case 2?:
switch type {
case .Move:
self.scaleView(self.baseImgView!, touches: (allTouches! as NSSet).allObjects)
break
case .Stay:
self.scaleView(self.clipperView!, touches: (allTouches! as NSSet).allObjects)
break
}
break
default:
break
}
correctFillLayer()
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
switch type {
case .Move:
correctBackImgView()
break
case .Stay:
correctClipperView()
break
}
}
//MARK Correct
private func correctBackImgView(){
var x = self.baseImgView?.frame.origin.x ?? 0
var y = self.baseImgView?.frame.origin.y ?? 0
var height = self.baseImgView?.frame.size.height ?? 0
var width = self.baseImgView?.frame.size.width ?? 0
if width < (self.clipperView?.frame.size.width ?? 0)! {
width = (self.clipperView?.frame.size.width ?? 0)!
height = width / (self.baseImgView?.frame.size.width ?? 0)! * height
}
if height < (self.clipperView?.frame.size.height ?? 0)! {
height = (self.clipperView?.frame.size.height ?? 0)!
width = height / (self.baseImgView?.frame.size.height ?? 0)! * width
}
if x > (self.clipperView?.frame.origin.x ?? 0)! {
x = (self.clipperView?.frame.origin.x ?? 0)!
} else if x < ((self.clipperView?.frame.origin.x ?? 0)! + (self.clipperView?.frame.size.width ?? 0)! - width){
x = (self.clipperView?.frame.origin.x ?? 0)! + (self.clipperView?.frame.size.width ?? 0)! - width
}
if y > (self.clipperView?.frame.origin.y ?? 0)! {
y = (self.clipperView?.frame.origin.y ?? 0)!
} else if y < (self.clipperView?.frame.origin.y ?? 0)! + (self.clipperView?.frame.size.height ?? 0)! - height {
y = (self.clipperView?.frame.origin.y ?? 0)! + (self.clipperView?.frame.size.height ?? 0)! - height
}
self.baseImgView?.frame = CGRect(x: x, y: y, width: width, height: height)
}
private func correctClipperView(){
var width = self.clipperView?.frame.size.width ?? 0
var height:CGFloat = 0.0
if width < minWidth {
width = minWidth
}
if width > UIScreen.main.bounds.size.width {
width = UIScreen.main.bounds.size.width
}
height = width / (self.resultImgSize?.width ?? 0)! * (self.resultImgSize?.height ?? 0)!
var x = self.clipperView?.frame.origin.x ?? 0
var y = self.clipperView?.frame.origin.y ?? 0
if x < (self.baseImgView?.frame.origin.x ?? 0)! {
x = (self.baseImgView?.frame.origin.x ?? 0)!
}
if x > UIScreen.main.bounds.size.width - width {
x = UIScreen.main.bounds.size.width - width
}
if y < (self.baseImgView?.frame.origin.y ?? 0)! {
y = (self.baseImgView?.frame.origin.y ?? 0)!
}
let tempy = (self.baseImgView?.frame.origin.y ?? 0)! + (self.baseImgView?.frame.size.height ?? 0)! - (self.clipperView?.frame.size.height ?? 0)!
if y > tempy{
y = (self.baseImgView?.frame.origin.y ?? 0)! + (self.baseImgView?.frame.size.height ?? 0)! - (self.clipperView?.frame.size.height ?? 0)!
}
self.clipperView?.frame = CGRect(x: x, y: y, width: width, height: height)
correctFillLayer()
}
private func correctFillLayer() {
let path = UIBezierPath.init(roundedRect: self.bounds, cornerRadius: 0)
let circlePath = UIBezierPath.init(roundedRect: (clipperView?.frame)!, cornerRadius: 0)
path.append(circlePath)
path.usesEvenOddFillRule = true
self.fillLayer?.path = path.cgPath
}
//MARK Correct
private func scaleView(_ view:UIView,touches:Array<Any>){
let touch1 = (touches[0] as AnyObject).location(in: self)
let touch2 = (touches[1] as AnyObject).location(in: self)
let distance = self.distanceBetweenTwoPoints(touch1, toPoint: touch2)
if scaleDistance > 0 {
var imgFrame = view.frame
if distance > scaleDistance + 2{
imgFrame.size.width += 10
scaleDistance = distance
}
if distance < scaleDistance - 2 {
imgFrame.size.width -= 10
scaleDistance = distance
}
if type == .Stay{ //图片不动
imgFrame.size.height = view.frame.size.height * imgFrame.size.width / view.frame.size.width
let mainWidth = UIScreen.main.bounds.size.width
let imgWidth = imgFrame.size.width > mainWidth ? mainWidth : imgFrame.size.width
let imgHeight = imgWidth * (resultImgSize?.height ?? 0) / (resultImgSize?.width == 0 ? 1 : (resultImgSize?.width ?? 1)!)
let addwidth = imgWidth - view.frame.size.width
let addheight = imgHeight - view.frame.size.height
if imgHeight != 0 && imgWidth != 0{
view.frame = CGRect(x:imgFrame.origin.x - addwidth/2.0, y: imgFrame.origin.y - addheight/2.0, width: imgWidth, height: imgHeight)
}
}else{ //图片移动
imgFrame.size.height = view.frame.size.height * imgFrame.size.width / view.frame.size.width
let addwidth = imgFrame.size.width - view.frame.size.width
let addheight = imgFrame.size.height - view.frame.size.height
let cripWidth = imgFrame.size.width - (clipperView?.frame.width ?? 0)
let cripHeight = imgFrame.size.height - (clipperView?.frame.height ?? 0)
if imgFrame.size.width != 0 && imgFrame.size.height != 0 && cripWidth > -5 && cripHeight > -5 {
view.frame = CGRect(x:imgFrame.origin.x - addwidth/2.0, y: imgFrame.origin.y - addheight/2.0, width: imgFrame.width, height: imgFrame.height)
}
}
}else{
scaleDistance = distance
}
}
private func distanceBetweenTwoPoints(_ fromPoint:CGPoint,toPoint:CGPoint) -> CGFloat {
let x = toPoint.x - fromPoint.x
let y = toPoint.y - fromPoint.y
return CGFloat(sqrtf(Float(x * x + y * y)))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
extension UIImage {
func scaledToSize(newSize:CGSize,withScale:Bool) -> UIImage {
var scale:CGFloat = 1
if withScale {
scale = UIScreen.main.scale
}
let mynewSize = CGSize(width: newSize.width * scale, height: newSize.height * scale)
UIGraphicsBeginImageContextWithOptions(mynewSize, false, 0)
self.draw(in: CGRect(origin: CGPoint.zero, size: mynewSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage ?? UIImage()
}
}
//
// YHResultBottomView.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResultBottomView: UIView {
typealias Block = () -> ()
var nextblock: Block?
var nextButton: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpView() {
nextButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.backgroundColor = UIColor(hex: 0x2274ee)
button.contentHorizontalAlignment = .center
button.setTitle("开始识别", for: .normal)
button.setTitleColor(UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius6
button.clipsToBounds = true
button.addTarget(self, action: #selector(goNext), for: .touchUpInside)
return button
}()
addSubview(nextButton)
nextButton.snp.makeConstraints { make in
make.right.equalTo(-16)
make.top.equalTo(10)
make.height.equalTo(44)
make.left.equalTo(16)
}
// nextButton.layoutIfNeeded()
// nextButton.backgroundGradient()
// nextButton.addYinHeGradualLayer()
}
@objc func goNext() {
if let block = nextblock {
block()
}
}
}
...@@ -187,7 +187,6 @@ extension YHWorkResponsibilitiesTableViewCell: UITextViewDelegate { ...@@ -187,7 +187,6 @@ extension YHWorkResponsibilitiesTableViewCell: UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let newLength = (textView.text as NSString).length + text.count - range.length let newLength = (textView.text as NSString).length + text.count - range.length
return newLength <= 2000 return newLength <= 2000
} }
} }
...@@ -120,7 +120,7 @@ class YHInformationFillTipsAlertView: UIView { ...@@ -120,7 +120,7 @@ class YHInformationFillTipsAlertView: UIView {
make.height.equalTo(48) make.height.equalTo(48)
} }
checkBtn.layoutIfNeeded()//非常重要!!!! checkBtn.layoutIfNeeded()//非常重要!!!!
checkBtn.backgroundGradient() checkBtn.addYinHeGradualLayer()
......
...@@ -88,7 +88,7 @@ class YHLoginTipsView: UIView { ...@@ -88,7 +88,7 @@ class YHLoginTipsView: UIView {
loginBtn.addTarget(self, action: #selector(clickLoginBtn), for: .touchUpInside) loginBtn.addTarget(self, action: #selector(clickLoginBtn), for: .touchUpInside)
loginBtn.layoutIfNeeded() loginBtn.layoutIfNeeded()
loginBtn.backgroundGradient() loginBtn.addYinHeGradualLayer()
} }
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
......
...@@ -184,7 +184,7 @@ class YHSubmintAllInfoSuccessTipView: UIView { ...@@ -184,7 +184,7 @@ class YHSubmintAllInfoSuccessTipView: UIView {
make.height.equalTo(45) make.height.equalTo(45)
} }
agreeButton.layoutIfNeeded() agreeButton.layoutIfNeeded()
agreeButton.backgroundGradient() agreeButton.addYinHeGradualLayer()
} }
......
...@@ -128,7 +128,8 @@ class YHSubmitAllInfoCheckView: UIView { ...@@ -128,7 +128,8 @@ class YHSubmitAllInfoCheckView: UIView {
make.height.equalTo(45) make.height.equalTo(45)
} }
agreeButton.layoutIfNeeded() agreeButton.layoutIfNeeded()
agreeButton.backgroundGradient() agreeButton.addYinHeGradualLayer()
agreeButton.addYinHeGradualLayer()
} }
......
...@@ -100,33 +100,6 @@ extension UIButton { ...@@ -100,33 +100,6 @@ extension UIButton {
} }
} }
extension UIButton {
/// 渐变背景
@discardableResult
func backgroundGradient<T: UIButton>() -> T {
let gradientLayer = CAGradientLayer()
//几个颜色
gradientLayer.colors = UIColor.arrBrandGradaterColors.map { $0.cgColor }
//颜色的分界点
gradientLayer.locations = [0, 1.0]
//开始
gradientLayer.startPoint = CGPoint(x: 0.12, y: 0.25)
//结束,主要是控制渐变方向
gradientLayer.endPoint = CGPoint(x: 0.38, y: 0.25)
//多大区域
gradientLayer.frame = bounds
UIGraphicsBeginImageContext(gradientLayer.frame.size)
if let context = UIGraphicsGetCurrentContext() {
gradientLayer.render(in: context)
let outputImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
setBackgroundImage(outputImage, for: .normal)
}
return self as! T
}
}
// 扩大点击范围 // 扩大点击范围
extension UIButton{ extension UIButton{
......
...@@ -165,5 +165,7 @@ class YHAllApiName { ...@@ -165,5 +165,7 @@ class YHAllApiName {
static let previewFamilyInfoApi = "infoflow/information/family" static let previewFamilyInfoApi = "infoflow/information/family"
//学历/专业资格 //学历/专业资格
static let previewAcademicAndProfessionalQualificationInfoApi = "infoflow/education/preview" static let previewAcademicAndProfessionalQualificationInfoApi = "infoflow/education/preview"
//工作经验
static let previewWorkExpInfoApi = "infoflow/work/preview"
} }
} }
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "image_clipper_back@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "image_clipper_back@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "image_clipper_cannal@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "image_clipper_cannal@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment