Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
37c0dda8
Commit
37c0dda8
authored
Apr 08, 2024
by
pete谢兆麟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
瀑布流添加
parent
184ac7fe
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
737 additions
and
49 deletions
+737
-49
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+12
-0
YHDavidTestViewController.swift
...lasses/Modules/Home(首页)/C/YHDavidTestViewController.swift
+8
-8
YHHomePageViewController.swift
...Classes/Modules/Home(首页)/C/YHHomePageViewController.swift
+7
-7
YHHomeCustomCell.swift
.../galaxy/Classes/Modules/Home(首页)/V/YHHomeCustomCell.swift
+4
-4
YHServerHKLifeViewController.swift
...lligentService(服务中心)/C/YHServerHKLifeViewController.swift
+5
-2
YHDocumentMessageTableViewCell.swift
.../MyDocuments(我的文书)/V/YHDocumentMessageTableViewCell.swift
+42
-23
YHHomeCollectionLayout.swift
...s/IntelligentService(服务中心)/V/YHHomeCollectionLayout.swift
+341
-0
YHHomeCollectionViewCell.swift
...IntelligentService(服务中心)/V/YHHomeCollectionViewCell.swift
+175
-0
YHServiceTableFootView.swift
...s/IntelligentService(服务中心)/V/YHServiceTableFootView.swift
+138
-0
YHAboutUsViewController.swift
.../Classes/Modules/Mine(我的)/C/YHAboutUsViewController.swift
+5
-5
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
37c0dda8
...
...
@@ -24,6 +24,9 @@
044413FF2BC391F000784A14
/* YHServiceListViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044413FE2BC391F000784A14
/* YHServiceListViewController.swift */
;
};
044414012BC3979800784A14
/* YHServerHKLifeViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044414002BC3979800784A14
/* YHServerHKLifeViewController.swift */
;
};
044414032BC39B8D00784A14
/* YHServerTableHeadView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044414022BC39B8D00784A14
/* YHServerTableHeadView.swift */
;
};
044414052BC3B9DE00784A14
/* YHServiceTableFootView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044414042BC3B9DE00784A14
/* YHServiceTableFootView.swift */
;
};
044414072BC3C54B00784A14
/* YHHomeCollectionViewCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044414062BC3C54B00784A14
/* YHHomeCollectionViewCell.swift */
;
};
044414092BC3CE8500784A14
/* YHHomeCollectionLayout.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044414082BC3CE8500784A14
/* YHHomeCollectionLayout.swift */
;
};
044867B42BA1953B00DFAD4A
/* YHCertificateFilterView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044867B32BA1953B00DFAD4A
/* YHCertificateFilterView.swift */
;
};
044867B62BA1A03800DFAD4A
/* YHCertificateFilterItemCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044867B52BA1A03800DFAD4A
/* YHCertificateFilterItemCell.swift */
;
};
044867B82BA1C75700DFAD4A
/* YHCertificateUploadFailTipsView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044867B72BA1C75700DFAD4A
/* YHCertificateUploadFailTipsView.swift */
;
};
...
...
@@ -441,6 +444,9 @@
044413FE2BC391F000784A14
/* YHServiceListViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHServiceListViewController.swift
;
sourceTree
=
"<group>"
;
};
044414002BC3979800784A14
/* YHServerHKLifeViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHServerHKLifeViewController.swift
;
sourceTree
=
"<group>"
;
};
044414022BC39B8D00784A14
/* YHServerTableHeadView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHServerTableHeadView.swift
;
sourceTree
=
"<group>"
;
};
044414042BC3B9DE00784A14
/* YHServiceTableFootView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHServiceTableFootView.swift
;
sourceTree
=
"<group>"
;
};
044414062BC3C54B00784A14
/* YHHomeCollectionViewCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHHomeCollectionViewCell.swift
;
sourceTree
=
"<group>"
;
};
044414082BC3CE8500784A14
/* YHHomeCollectionLayout.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHHomeCollectionLayout.swift
;
sourceTree
=
"<group>"
;
};
044867B32BA1953B00DFAD4A
/* YHCertificateFilterView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHCertificateFilterView.swift
;
sourceTree
=
"<group>"
;
};
044867B52BA1A03800DFAD4A
/* YHCertificateFilterItemCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHCertificateFilterItemCell.swift
;
sourceTree
=
"<group>"
;
};
044867B72BA1C75700DFAD4A
/* YHCertificateUploadFailTipsView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHCertificateUploadFailTipsView.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -2046,6 +2052,9 @@
A5FD63C82B63A35B00D1D9DA
/* YHInformationFillTipsAlertView.swift */
,
A5FD63CA2B63D6C300D1D9DA
/* YHInformationFillTipsCell.swift */
,
044414022BC39B8D00784A14
/* YHServerTableHeadView.swift */
,
044414042BC3B9DE00784A14
/* YHServiceTableFootView.swift */
,
044414062BC3C54B00784A14
/* YHHomeCollectionViewCell.swift */
,
044414082BC3CE8500784A14
/* YHHomeCollectionLayout.swift */
,
);
path
=
V
;
sourceTree
=
"<group>"
;
...
...
@@ -2389,6 +2398,7 @@
045EEF002B9F171A0022A143
/* YHFormItemEnterDetailCell.swift in Sources */
,
A5ACE9362B4564F7002C94D2
/* YHNetworkStatusManager.swift in Sources */
,
A5D0012A2BABC84A001F003C
/* YHFileListHeaerView.swift in Sources */
,
044414052BC3B9DE00784A14
/* YHServiceTableFootView.swift in Sources */
,
045EEEEF2B9F171A0022A143
/* YHCertificateInfoController.swift in Sources */
,
045EEEDA2B9F171A0022A143
/* YHEducationInfoListVC.swift in Sources */
,
A5ACE92C2B4564F7002C94D2
/* YHLoginStyleButton.swift in Sources */
,
...
...
@@ -2579,6 +2589,7 @@
0480976B2BA15269000B9DCA
/* YHCertificateInfoCell.swift in Sources */
,
A56D2D612B62020C009C83A8
/* YHContractMainItemStatusCell.swift in Sources */
,
045EEECF2B9F171A0022A143
/* YHScoreOptionsView.swift in Sources */
,
044414072BC3C54B00784A14
/* YHHomeCollectionViewCell.swift in Sources */
,
045EEEC12B9F171A0022A143
/* YHOtherInfoFillModel.swift in Sources */
,
0468D43A2B579EAC00CFB916
/* YHLoginViewModel.swift in Sources */
,
045EEE9E2B9F171A0022A143
/* YHWorkExampleModel.swift in Sources */
,
...
...
@@ -2654,6 +2665,7 @@
A5C5B2EA2B4ECA4D00A7C5D1
/* YHDavidModel0.swift in Sources */
,
A5ACE9572B4564F7002C94D2
/* YHBasicContentView.swift in Sources */
,
A517A4E52BB6C4BB000DEECD
/* YHDocumentFileItemView.swift in Sources */
,
044414092BC3CE8500784A14
/* YHHomeCollectionLayout.swift in Sources */
,
045EEEFE2B9F171A0022A143
/* YHFormItemInputTextCell.swift in Sources */
,
045EEEDD2B9F171A0022A143
/* YHCollegeNameCell.swift in Sources */
,
045EEF162B9F171A0022A143
/* YHMainApplicantInformationViewController.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/Home(首页)/C/YHDavidTestViewController.swift
View file @
37c0dda8
...
...
@@ -66,7 +66,7 @@ class YHDavidTestViewController: YHBaseViewController {
lazy
var
items
=
{
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
)]
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
)]
}()
...
...
@@ -105,7 +105,7 @@ class YHDavidTestViewController: YHBaseViewController {
view
.
backgroundColor
=
.
white
gk_navigationBar
.
isHidden
=
true
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高
"
)]
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"
"
)]
self
.
myCollectView
.
reloadData
()
}
}
...
...
@@ -115,7 +115,7 @@ extension YHDavidTestViewController {
private
func
loadFirstItem
()
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高
"
)]
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"
"
)]
self
.
myCollectView
.
es
.
stopPullToRefresh
(
ignoreDate
:
true
,
ignoreFooter
:
false
)
self
.
myCollectView
.
reloadData
()
}
...
...
@@ -124,11 +124,11 @@ extension YHDavidTestViewController {
private
func
loadFakeData
()
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
myCollectView
.
es
.
stopLoadingMore
()
self
.
myCollectView
.
reloadData
()
...
...
galaxy/galaxy/Classes/Modules/Home(首页)/C/YHHomePageViewController.swift
View file @
37c0dda8
...
...
@@ -12,7 +12,7 @@ import GKNavigationBarSwift
class
YHHomePageViewController
:
YHBaseViewController
{
lazy
var
items
=
{
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
)]
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
)]
}()
private
lazy
var
homeBannerView
:
YHHomeBannerView
=
{
...
...
@@ -84,7 +84,7 @@ private extension YHHomePageViewController {
func
loadFirstItem
()
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高
"
)]
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"
"
)]
self
.
homeCollectView
.
es
.
stopPullToRefresh
(
ignoreDate
:
true
,
ignoreFooter
:
false
)
self
.
homeCollectView
.
reloadData
()
}
...
...
@@ -93,11 +93,11 @@ private extension YHHomePageViewController {
func
loadFakeData
()
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
items
.
append
(
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
))
self
.
homeCollectView
.
es
.
stopLoadingMore
()
self
.
homeCollectView
.
reloadData
()
...
...
galaxy/galaxy/Classes/Modules/Home(首页)/V/YHHomeCustomCell.swift
View file @
37c0dda8
...
...
@@ -13,10 +13,10 @@ class YHHomeCustomCell: UITableViewCell {
lazy
var
items
=
{
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_response"
,
title
:
"快速响应"
,
detail
:
"身份规划师一对一专业服务,第一时间响应您的需求"
),
AboutAdvantageItem
(
iconName
:
"about_service"
,
title
:
"专业服务"
,
detail
:
"5年经验+英语专8级文案导师团队倾力支持"
),
AboutAdvantageItem
(
iconName
:
"about_service2"
,
title
:
"精准匹配"
,
detail
:
"香港专才、香港留学获批常年保持90%以上"
)]
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_response"
,
title
:
"快速响应"
,
detail
:
"身份规划师一对一专业服务,第一时间响应您的需求"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_service"
,
title
:
"专业服务"
,
detail
:
"5年经验+英语专8级文案导师团队倾力支持"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_service2"
,
title
:
"精准匹配"
,
detail
:
"香港专才、香港留学获批常年保持90%以上"
,
url
:
""
)]
}()
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/C/YHServerHKLifeViewController.swift
View file @
37c0dda8
...
...
@@ -13,6 +13,7 @@ class YHServerHKLifeViewController: YHBaseViewController {
private
let
serviceCenterMainReqVM
:
YHServiceCenterMainViewModel
=
YHServiceCenterMainViewModel
()
var
tableHeadView
:
YHServerTableHeadView
!
var
tableFootView
:
YHServiceTableFootView
!
var
homeTableView
:
UITableView
=
{
let
tableView
=
UITableView
(
frame
:
.
zero
,
style
:
.
grouped
)
...
...
@@ -61,9 +62,11 @@ extension YHServerHKLifeViewController {
tableHeadView
=
YHServerTableHeadView
()
tableHeadView
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
365
)
tableFootView
=
YHServiceTableFootView
()
tableFootView
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
KScreenHeight
-
k_Height_safeAreaInsetsTop
()
-
48
-
k_Height_TabBar
)
view
.
addSubview
(
homeTableView
)
homeTableView
.
tableHeaderView
=
tableHeadView
homeTableView
.
tableFooterView
=
tableFootView
homeTableView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
left
.
right
.
equalToSuperview
()
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
k_Height_TabBar
)
...
...
@@ -83,7 +86,7 @@ extension YHServerHKLifeViewController {
// MARK: - UITableViewDelegate 和 UITableViewDataSource
extension
YHServerHKLifeViewController
:
UITableViewDelegate
,
UITableViewDataSource
{
func
numberOfSections
(
in
tableView
:
UITableView
)
->
Int
{
return
self
.
serviceCenterMainReqVM
.
arrContactList
.
count
return
1
}
func
tableView
(
_
tableView
:
UITableView
,
numberOfRowsInSection
section
:
Int
)
->
Int
{
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/MyDocuments(我的文书)/V/YHDocumentMessageTableViewCell.swift
View file @
37c0dda8
...
...
@@ -211,48 +211,67 @@ class YHDocumentMessageTableViewCell: UITableViewCell {
func
updateAllViews
()
{
guard
let
dataSource
=
dataSource
else
{
return
}
if
dataSource
.
prospectus
.
id
==
0
{
//state 1待提交 2待客户确认 3待核对 4待审核 5驳回 6已定稿
var
color
=
UIColor
.
red
var
title
=
" 待提交 "
if
dataSource
.
writing_document
.
status
==
1
{
title
=
" 待提交 "
/*
docOpt: {
1: '待确认',
2: '待签章',
3: '已驳回',
4: '待核对',
5: '已签章',
6: '已定稿',
7: '已完成'
},
*/
var
statusTxt
=
""
var
color
:
UIColor
=
.
brandMainColor
let
status
=
dataSource
.
writing_document
.
status
if
status
==
1
{
statusTxt
=
"待确认"
color
=
UIColor
.
brandMainColor
lookButton
.
isHidden
=
true
}
if
dataSource
.
writing_document
.
status
==
2
{
title
=
" 待确认 "
}
else
if
status
==
2
{
statusTxt
=
"待签章"
color
=
UIColor
.
brandMainColor
lookButton
.
isHidden
=
true
}
if
dataSource
.
writing_document
.
status
==
3
{
title
=
"核对中"
color
=
UIColor
.
warnColor
}
else
if
status
==
3
{
statusTxt
=
"已驳回"
color
=
UIColor
.
failColor
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
if
dataSource
.
writing_document
.
status
==
4
{
title
=
" 待审核 "
}
else
if
status
==
4
{
statusTxt
=
"核对中"
color
=
UIColor
.
warnColor
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
if
dataSource
.
writing_document
.
status
==
5
{
title
=
" 已驳回 "
color
=
UIColor
.
failColor
}
else
if
status
==
5
{
statusTxt
=
"已签章"
color
=
UIColor
.
successColor
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
if
dataSource
.
writing_document
.
status
==
6
{
title
=
" 已定稿 "
}
else
if
status
==
6
{
statusTxt
=
"已定稿"
color
=
UIColor
.
labelTextColor2
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
else
if
status
==
7
{
statusTxt
=
"已完成"
color
=
UIColor
.
labelTextColor2
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
else
{
statusTxt
=
"--"
color
=
UIColor
.
failColor
editButton
.
isHidden
=
true
submitButton
.
isHidden
=
true
bottomCenterLineView
.
isHidden
=
true
}
subTitleLabel
.
text
=
title
subTitleLabel
.
text
=
statusTxt
subTitleLabel
.
textColor
=
color
subTitleLabel
.
backgroundColor
=
color
.
withAlphaComponent
(
0.08
)
fileNameLabel
.
text
=
dataSource
.
writing_document
.
name
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/V/YHHomeCollectionLayout.swift
0 → 100644
View file @
37c0dda8
//
// YHHomeCollectionLayout.swift
// galaxy
//
// Created by EDY on 2024/4/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
public
let
CollectionViewWaterfallElementKindSectionHeader
=
"CollectionViewWaterfallElementKindSectionHeader"
public
let
CollectionViewWaterfallElementKindSectionFooter
=
"CollectionViewWaterfallElementKindSectionFooter"
@objc
public
protocol
CollectionViewWaterfallLayoutDelegate
:
UICollectionViewDelegate
{
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
sizeForItemAtIndexPath
indexPath
:
NSIndexPath
)
->
CGSize
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
heightForHeaderInSection
section
:
Int
)
->
Float
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
heightForFooterInSection
section
:
Int
)
->
Float
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
insetForSection
section
:
Int
)
->
UIEdgeInsets
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
insetForHeaderInSection
section
:
Int
)
->
UIEdgeInsets
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
insetForFooterInSection
section
:
Int
)
->
UIEdgeInsets
@objc
optional
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
minimumInteritemSpacingForSection
section
:
Int
)
->
Float
}
class
YHHomeCollectionLayout
:
UICollectionViewLayout
{
// MARK: - Private constants
/// How many items to be union into a single rectangle
private
let
unionSize
=
20
// MARK: - Public Properties
public
var
columnCount
:
Int
=
2
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
columnCount
)
}
}
public
var
minimumColumnSpacing
:
Float
=
10.0
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
minimumColumnSpacing
)
}
}
public
var
minimumInteritemSpacing
:
Float
=
10.0
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
minimumInteritemSpacing
)
}
}
public
var
headerHeight
:
Float
=
0.0
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
headerHeight
)
}
}
public
var
footerHeight
:
Float
=
0.0
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
footerHeight
)
}
}
public
var
headerInset
:
UIEdgeInsets
=
.
zero
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
headerInset
)
}
}
public
var
footerInset
:
UIEdgeInsets
=
.
zero
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
footerInset
)
}
}
public
var
sectionInset
:
UIEdgeInsets
=
.
zero
{
didSet
{
invalidateIfNotEqual
(
oldValue
,
newValue
:
sectionInset
)
}
}
public
override
var
collectionViewContentSize
:
CGSize
{
let
numberOfSections
=
collectionView
?
.
numberOfSections
if
numberOfSections
==
0
{
return
CGSize
.
zero
}
var
contentSize
=
collectionView
?
.
bounds
.
size
contentSize
?
.
height
=
CGFloat
(
columnHeights
[
0
])
return
contentSize
!
}
// MARK: - Private Properties
private
weak
var
delegate
:
CollectionViewWaterfallLayoutDelegate
?
{
get
{
return
collectionView
?
.
delegate
as?
CollectionViewWaterfallLayoutDelegate
}
}
private
var
columnHeights
=
[
Float
]()
private
var
sectionItemAttributes
=
[[
UICollectionViewLayoutAttributes
]]()
private
var
allItemAttributes
=
[
UICollectionViewLayoutAttributes
]()
private
var
headersAttribute
=
[
Int
:
UICollectionViewLayoutAttributes
]()
private
var
footersAttribute
=
[
Int
:
UICollectionViewLayoutAttributes
]()
private
var
unionRects
=
[
CGRect
]()
// MARK: - UICollectionViewLayout Methods
public
override
func
prepare
()
{
super
.
prepare
()
guard
let
numberOfSections
=
collectionView
?
.
numberOfSections
else
{
return
}
guard
let
delegate
=
delegate
else
{
assertionFailure
(
"UICollectionView's delegate should conform to WaterfallLayoutDelegate protocol"
)
return
}
guard
let
collectionView
=
collectionView
else
{
return
}
assert
(
columnCount
>
0
,
"WaterfallFlowLayout's columnCount should be greater than 0"
)
// Initialize variables
headersAttribute
.
removeAll
(
keepingCapacity
:
false
)
footersAttribute
.
removeAll
(
keepingCapacity
:
false
)
unionRects
.
removeAll
(
keepingCapacity
:
false
)
columnHeights
.
removeAll
(
keepingCapacity
:
false
)
allItemAttributes
.
removeAll
(
keepingCapacity
:
false
)
sectionItemAttributes
.
removeAll
(
keepingCapacity
:
false
)
for
_
in
0
..<
columnCount
{
self
.
columnHeights
.
append
(
0
)
}
// Create attributes
var
top
:
Float
=
0
var
attributes
:
UICollectionViewLayoutAttributes
for
section
in
0
..<
numberOfSections
{
/*
* 1. Get section-specific metrics (minimumInteritemSpacing, sectionInset)
*/
let
minimumInteritemSpacing
:
Float
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
minimumInteritemSpacingForSection
:
section
)
??
self
.
minimumInteritemSpacing
let
sectionInset
:
UIEdgeInsets
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
insetForSection
:
section
)
??
self
.
sectionInset
let
width
=
Float
(
collectionView
.
frame
.
size
.
width
-
sectionInset
.
left
-
sectionInset
.
right
)
let
itemWidth
=
floorf
((
width
-
Float
(
columnCount
-
1
)
*
Float
(
minimumColumnSpacing
))
/
Float
(
columnCount
))
/*
* 2. Section header
*/
let
headerHeight
:
Float
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
heightForHeaderInSection
:
section
)
??
self
.
headerHeight
let
headerInset
:
UIEdgeInsets
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
insetForHeaderInSection
:
section
)
??
self
.
headerInset
top
+=
Float
(
headerInset
.
top
)
if
headerHeight
>
0
{
attributes
=
UICollectionViewLayoutAttributes
(
forSupplementaryViewOfKind
:
CollectionViewWaterfallElementKindSectionHeader
,
with
:
NSIndexPath
(
item
:
0
,
section
:
section
)
as
IndexPath
)
attributes
.
frame
=
CGRect
(
x
:
headerInset
.
left
,
y
:
CGFloat
(
top
),
width
:
collectionView
.
frame
.
size
.
width
-
(
headerInset
.
left
+
headerInset
.
right
),
height
:
CGFloat
(
headerHeight
))
headersAttribute
[
section
]
=
attributes
allItemAttributes
.
append
(
attributes
)
top
=
Float
(
attributes
.
frame
.
maxY
)
+
Float
(
headerInset
.
bottom
)
}
top
+=
Float
(
sectionInset
.
top
)
for
idx
in
0
..<
columnCount
{
columnHeights
[
idx
]
=
top
}
/*
* 3. Section items
*/
let
itemCount
=
collectionView
.
numberOfItems
(
inSection
:
section
)
var
itemAttributes
=
[
UICollectionViewLayoutAttributes
]()
// Item will be put into shortest column.
for
idx
in
0
..<
itemCount
{
let
indexPath
=
NSIndexPath
(
item
:
idx
,
section
:
section
)
let
columnIndex
=
shortestColumnIndex
()
let
xOffset
=
Float
(
sectionInset
.
left
)
+
Float
(
itemWidth
+
minimumColumnSpacing
)
*
Float
(
columnIndex
)
let
yOffset
=
columnHeights
[
columnIndex
]
let
itemSize
=
delegate
.
collectionView
(
collectionView
,
layout
:
self
,
sizeForItemAtIndexPath
:
indexPath
)
var
itemHeight
:
Float
=
0.0
if
itemSize
.
height
>
0
&&
itemSize
.
width
>
0
{
itemHeight
=
Float
(
itemSize
.
height
)
*
itemWidth
/
Float
(
itemSize
.
width
)
}
attributes
=
UICollectionViewLayoutAttributes
(
forCellWith
:
indexPath
as
IndexPath
)
attributes
.
frame
=
CGRect
(
x
:
CGFloat
(
xOffset
),
y
:
CGFloat
(
yOffset
),
width
:
CGFloat
(
itemWidth
),
height
:
CGFloat
(
itemHeight
))
itemAttributes
.
append
(
attributes
)
allItemAttributes
.
append
(
attributes
)
columnHeights
[
columnIndex
]
=
Float
(
attributes
.
frame
.
maxY
)
+
minimumInteritemSpacing
}
sectionItemAttributes
.
append
(
itemAttributes
)
/*
* 4. Section footer
*/
let
columnIndex
=
longestColumnIndex
()
top
=
columnHeights
[
columnIndex
]
-
minimumInteritemSpacing
+
Float
(
sectionInset
.
bottom
)
let
footerHeight
:
Float
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
heightForFooterInSection
:
section
)
??
self
.
footerHeight
let
footerInset
:
UIEdgeInsets
=
delegate
.
collectionView
?(
collectionView
,
layout
:
self
,
insetForFooterInSection
:
section
)
??
self
.
footerInset
top
+=
Float
(
footerInset
.
top
)
if
footerHeight
>
0
{
attributes
=
UICollectionViewLayoutAttributes
(
forSupplementaryViewOfKind
:
CollectionViewWaterfallElementKindSectionFooter
,
with
:
NSIndexPath
(
item
:
0
,
section
:
section
)
as
IndexPath
)
attributes
.
frame
=
CGRect
(
x
:
footerInset
.
left
,
y
:
CGFloat
(
top
),
width
:
collectionView
.
frame
.
size
.
width
-
(
footerInset
.
left
+
footerInset
.
right
),
height
:
CGFloat
(
footerHeight
))
footersAttribute
[
section
]
=
attributes
allItemAttributes
.
append
(
attributes
)
top
=
Float
(
attributes
.
frame
.
maxY
)
+
Float
(
footerInset
.
bottom
)
}
for
idx
in
0
..<
columnCount
{
columnHeights
[
idx
]
=
top
}
}
// Build union rects
var
idx
=
0
let
itemCounts
=
allItemAttributes
.
count
while
idx
<
itemCounts
{
let
rect1
=
allItemAttributes
[
idx
]
.
frame
idx
=
min
(
idx
+
unionSize
,
itemCounts
)
-
1
let
rect2
=
allItemAttributes
[
idx
]
.
frame
unionRects
.
append
(
rect1
.
union
(
rect2
))
idx
+=
1
}
}
public
override
func
layoutAttributesForItem
(
at
indexPath
:
IndexPath
)
->
UICollectionViewLayoutAttributes
?
{
if
indexPath
.
section
>=
sectionItemAttributes
.
count
{
return
nil
}
if
indexPath
.
item
>=
sectionItemAttributes
[
indexPath
.
section
]
.
count
{
return
nil
}
return
sectionItemAttributes
[
indexPath
.
section
][
indexPath
.
item
]
}
public
override
func
layoutAttributesForSupplementaryView
(
ofKind
elementKind
:
String
,
at
indexPath
:
IndexPath
)
->
UICollectionViewLayoutAttributes
?
{
var
attribute
:
UICollectionViewLayoutAttributes
?
if
elementKind
==
CollectionViewWaterfallElementKindSectionHeader
{
attribute
=
headersAttribute
[
indexPath
.
section
]
}
else
if
elementKind
==
CollectionViewWaterfallElementKindSectionFooter
{
attribute
=
footersAttribute
[
indexPath
.
section
]
}
return
attribute
}
public
override
func
layoutAttributesForElements
(
in
rect
:
CGRect
)
->
[
UICollectionViewLayoutAttributes
]?
{
var
begin
:
Int
=
0
var
end
:
Int
=
unionRects
.
count
var
attrs
=
[
UICollectionViewLayoutAttributes
]()
for
i
in
0
..<
unionRects
.
count
{
if
rect
.
intersects
(
unionRects
[
i
])
{
begin
=
i
*
unionSize
break
}
}
for
i
in
(
0
..<
unionRects
.
count
)
.
reversed
()
{
if
rect
.
intersects
(
unionRects
[
i
])
{
end
=
min
((
i
+
1
)
*
unionSize
,
allItemAttributes
.
count
)
break
}
}
for
i
in
begin
..<
end
{
let
attr
=
allItemAttributes
[
i
]
if
rect
.
intersects
(
attr
.
frame
)
{
attrs
.
append
(
attr
)
}
}
return
Array
(
attrs
)
}
public
override
func
shouldInvalidateLayout
(
forBoundsChange
newBounds
:
CGRect
)
->
Bool
{
let
oldBounds
=
collectionView
?
.
bounds
if
newBounds
.
width
!=
oldBounds
?
.
width
{
return
true
}
return
false
}
}
// MARK: - Private Methods
private
extension
YHHomeCollectionLayout
{
func
shortestColumnIndex
()
->
Int
{
var
index
:
Int
=
0
var
shortestHeight
=
MAXFLOAT
for
(
idx
,
height
)
in
columnHeights
.
enumerated
()
{
if
height
<
shortestHeight
{
shortestHeight
=
height
index
=
idx
}
}
return
index
}
func
longestColumnIndex
()
->
Int
{
var
index
:
Int
=
0
var
longestHeight
:
Float
=
0
for
(
idx
,
height
)
in
columnHeights
.
enumerated
()
{
if
height
>
longestHeight
{
longestHeight
=
height
index
=
idx
}
}
return
index
}
func
invalidateIfNotEqual
<
T
:
Equatable
>
(
_
oldValue
:
T
,
newValue
:
T
)
{
if
oldValue
!=
newValue
{
invalidateLayout
()
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/V/YHHomeCollectionViewCell.swift
0 → 100644
View file @
37c0dda8
//
// YHHomeCollectionViewCell.swift
// galaxy
//
// Created by EDY on 2024/4/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
import
Kingfisher
class
YHHomeCollectionViewCell
:
UICollectionViewCell
{
static
let
cellReuseIdentifier
=
"YHHomeCollectionViewCell"
var
dataSource
:
AboutAdvantageItem
?
{
didSet
{
updataAllSubViews
()
}
}
lazy
var
titleImageView
:
UIImageView
=
{
let
imageV
=
UIImageView
(
image
:
UIImage
(
named
:
"home_title_image"
))
imageV
.
contentMode
=
.
scaleAspectFill
imageV
.
roundCorners
(
UIRectCorner
.
topLeft
,
radius
:
8
)
imageV
.
roundCorners
(
UIRectCorner
.
topRight
,
radius
:
8
)
return
imageV
}()
lazy
var
descripeLable
:
UILabel
=
{
let
label
=
UILabel
()
label
.
text
=
"赴港攻略,当日往返无忧,这个季节风景..赴港攻略,当日往返无忧,这个季节风景"
label
.
textColor
=
UIColor
(
hexString
:
"#333333"
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
10
)
label
.
numberOfLines
=
2
label
.
lineBreakMode
=
.
byTruncatingTail
return
label
}()
lazy
var
headImageView
:
UIImageView
=
{
let
imageV
=
UIImageView
(
image
:
UIImage
(
named
:
"home_person_icon"
))
imageV
.
contentMode
=
.
scaleAspectFill
return
imageV
}()
lazy
var
nameLable
:
UILabel
=
{
let
label
=
UILabel
()
label
.
text
=
"Fiona"
label
.
textColor
=
UIColor
(
hexString
:
"#333333"
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
10
)
return
label
}()
lazy
var
dateLable
:
UILabel
=
{
let
label
=
UILabel
()
label
.
text
=
"12-12"
label
.
textColor
=
UIColor
(
hexString
:
"#333333"
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
10
)
return
label
}()
lazy
var
heartImageView
:
UIImageView
=
{
let
imageV
=
UIImageView
(
image
:
UIImage
(
named
:
"home_red_heart"
))
imageV
.
contentMode
=
.
scaleAspectFill
return
imageV
}()
lazy
var
numLable
:
UILabel
=
{
let
label
=
UILabel
()
label
.
text
=
"2000"
label
.
textColor
=
UIColor
(
hexString
:
"#333333"
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
)
return
label
}()
required
init
?(
coder
:
NSCoder
)
{
super
.
init
(
coder
:
coder
)
}
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
setupUI
()
}
private
func
setupUI
()
{
contentView
.
backgroundColor
=
UIColor
(
hexString
:
"#F8F9FB"
)
contentView
.
roundCorners
([
.
topLeft
,
.
topRight
],
radius
:
4
)
contentView
.
clipsToBounds
=
true
contentView
.
addSubview
(
titleImageView
)
titleImageView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
top
.
equalToSuperview
()
make
.
height
.
equalTo
(
210
)
}
let
subHoldView
=
UIView
()
subHoldView
.
layer
.
backgroundColor
=
UIColor
(
red
:
1
,
green
:
1
,
blue
:
1
,
alpha
:
1
)
.
cgColor
subHoldView
.
layer
.
borderWidth
=
0.5
subHoldView
.
layer
.
borderColor
=
UIColor
(
red
:
0.798
,
green
:
0.798
,
blue
:
0.798
,
alpha
:
1
)
.
cgColor
contentView
.
addSubview
(
subHoldView
)
subHoldView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
titleImageView
.
snp
.
bottom
)
make
.
bottom
.
left
.
right
.
equalToSuperview
()
}
subHoldView
.
addSubview
(
descripeLable
)
descripeLable
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
10
)
make
.
left
.
equalToSuperview
()
.
offset
(
8
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
8
)
make
.
bottom
.
equalTo
(
-
36
)
}
subHoldView
.
addSubview
(
numLable
)
numLable
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
-
8
)
make
.
height
.
equalTo
(
12
)
make
.
bottom
.
equalTo
(
-
10
)
}
subHoldView
.
addSubview
(
heartImageView
)
heartImageView
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalTo
(
numLable
.
snp
.
left
)
.
offset
(
-
6
)
make
.
height
.
width
.
equalTo
(
12
)
make
.
bottom
.
equalTo
(
-
10
)
}
}
func
updataAllSubViews
()
{
guard
let
dataSource
=
dataSource
else
{
return
}
let
imageSize
=
getImageSize
(
dataSource
.
url
)
var
imageHeight
=
0.0
if
imageSize
.
width
==
0
{
imageHeight
=
width
}
else
{
imageHeight
=
width
*
imageSize
.
height
/
imageSize
.
width
if
imageHeight
>
280
{
imageHeight
=
280
}
}
titleImageView
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
right
.
top
.
equalToSuperview
()
make
.
height
.
equalTo
(
imageHeight
)
}
if
let
url
=
URL
(
string
:
dataSource
.
url
)
{
titleImageView
.
kf
.
setImage
(
with
:
url
)
}
descripeLable
.
text
=
dataSource
.
title
}
func
getImageSize
(
_
url
:
String
?)
->
CGSize
{
guard
let
urlStr
=
url
,
urlStr
.
count
!=
0
else
{
return
CGSize
.
zero
}
let
tempUrl
=
URL
(
string
:
urlStr
)
let
imageSourceRef
=
CGImageSourceCreateWithURL
(
tempUrl
!
as
CFURL
,
nil
)
var
width
:
CGFloat
=
0
var
height
:
CGFloat
=
0
if
let
imageSRef
=
imageSourceRef
{
let
imageProperties
=
CGImageSourceCopyPropertiesAtIndex
(
imageSRef
,
0
,
nil
)
if
let
imageP
=
imageProperties
{
let
imageDict
=
imageP
as
Dictionary
width
=
imageDict
[
kCGImagePropertyPixelWidth
]
as!
CGFloat
height
=
imageDict
[
kCGImagePropertyPixelHeight
]
as!
CGFloat
}
}
return
CGSize
(
width
:
width
,
height
:
height
)
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/V/YHServiceTableFootView.swift
0 → 100644
View file @
37c0dda8
//
// YHServiceTableFootView.swift
// galaxy
//
// Created by EDY on 2024/4/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHServiceTableFootView
:
UIView
{
lazy
var
items
=
{
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
)]
}()
lazy
var
myCollectView
=
{
// 设置布局方向
let
flowLayout
=
YHHomeCollectionLayout
()
flowLayout
.
minimumInteritemSpacing
=
7.0
flowLayout
.
minimumColumnSpacing
=
7.0
flowLayout
.
sectionInset
=
UIEdgeInsets
(
top
:
20
,
left
:
20
,
bottom
:
20
,
right
:
20
)
let
collectinoView
=
YHGestureCollectionView
(
frame
:
.
zero
,
collectionViewLayout
:
flowLayout
)
// collectinoView.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
collectinoView
.
backgroundColor
=
.
white
collectinoView
.
register
(
YHHomeCollectionViewCell
.
self
,
forCellWithReuseIdentifier
:
YHHomeCollectionViewCell
.
cellReuseIdentifier
)
collectinoView
.
delegate
=
self
collectinoView
.
dataSource
=
self
collectinoView
.
bounces
=
false
collectinoView
.
translatesAutoresizingMaskIntoConstraints
=
false
collectinoView
.
alwaysBounceVertical
=
true
return
collectinoView
}()
var
dataSource
:
YHScemeHeadModel
?
{
didSet
{
updateAllViews
()
}
}
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
backgroundColor
=
.
white
setUpView
()
self
.
items
=
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"https://copyright.bdstatic.com/vcg/creative/cc9c744cf9f7c864889c563cbdeddce6.jpg@h_1280"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"https://inews.gtimg.com/om_bt/OjPq2cnMN_-ivDKjxpCZ2kk_ab8YC5VMnL-0pQ21fUvd4AA/1000"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"https://img.pconline.com.cn/images/upload/upc/tx/itbbs/2101/25/c1/251135935_1611532823091_mthumb.jpg"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"https://photo.16pic.com/00/47/86/16pic_4786353_b.jpg"
),
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"精准匹配"
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
"https://inews.gtimg.com/om_bt/OMvPDmiuH_X5Vq1YLNgbFEzD2h_-2dCfWQ7xZFcKFSEsAAA/641"
)]
self
.
myCollectView
.
reloadData
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setUpView
()
{
backgroundColor
=
.
white
addSubview
(
myCollectView
)
myCollectView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
left
.
right
.
bottom
.
equalToSuperview
()
}
// self.myCollectView.es.addInfiniteScrolling {
// self.loadFakeData()
// }
}
func
updateAllViews
()
{
guard
let
model
=
dataSource
else
{
return
}
}
func
getImageSize
(
_
url
:
String
?)
->
CGSize
{
guard
let
urlStr
=
url
,
urlStr
.
count
!=
0
else
{
return
CGSize
.
zero
}
let
tempUrl
=
URL
(
string
:
urlStr
)
let
imageSourceRef
=
CGImageSourceCreateWithURL
(
tempUrl
!
as
CFURL
,
nil
)
var
width
:
CGFloat
=
0
var
height
:
CGFloat
=
0
if
let
imageSRef
=
imageSourceRef
{
let
imageProperties
=
CGImageSourceCopyPropertiesAtIndex
(
imageSRef
,
0
,
nil
)
if
let
imageP
=
imageProperties
{
let
imageDict
=
imageP
as
Dictionary
width
=
imageDict
[
kCGImagePropertyPixelWidth
]
as!
CGFloat
height
=
imageDict
[
kCGImagePropertyPixelHeight
]
as!
CGFloat
}
}
return
CGSize
(
width
:
width
,
height
:
height
)
}
}
extension
YHServiceTableFootView
:
UICollectionViewDelegate
,
UICollectionViewDataSource
{
func
collectionView
(
_
collectionView
:
UICollectionView
,
numberOfItemsInSection
section
:
Int
)
->
Int
{
return
items
.
count
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
cellForItemAt
indexPath
:
IndexPath
)
->
UICollectionViewCell
{
let
cell
=
collectionView
.
dequeueReusableCell
(
withReuseIdentifier
:
YHHomeCollectionViewCell
.
cellReuseIdentifier
,
for
:
indexPath
)
as!
YHHomeCollectionViewCell
cell
.
dataSource
=
items
[
indexPath
.
row
]
return
cell
}
private
func
collectionView
(
collectionView
:
UICollectionView
,
didSelectItemAtIndexPath
indexPath
:
NSIndexPath
)
{
print
(
"index is
\(
indexPath
.
row
)
"
)
}
// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
//
// }
}
extension
YHServiceTableFootView
:
CollectionViewWaterfallLayoutDelegate
{
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
:
UICollectionViewLayout
,
sizeForItemAtIndexPath
indexPath
:
NSIndexPath
)
->
CGSize
{
let
model
=
items
[
indexPath
.
row
]
let
text
=
model
.
title
let
width
=
(
KScreenWidth
-
47
)
/
2
let
font
=
UIFont
.
PFSC_R
(
ofSize
:
14
)
// 字体大小
let
maxWidth
=
width
-
16
// 最大宽度限制
// 创建NSAttributedString对象并设置属性
let
attributes
=
[
NSAttributedString
.
Key
.
font
:
font
]
as
[
NSAttributedString
.
Key
:
Any
]
_
=
NSMutableAttributedString
(
string
:
text
,
attributes
:
attributes
)
// 根据指定的最大宽度和字体大小计算文本的高度
let
size
=
(
text
as
NSString
)
.
boundingRect
(
with
:
CGSize
(
width
:
maxWidth
,
height
:
.
greatestFiniteMagnitude
),
options
:
.
usesLineFragmentOrigin
,
attributes
:
attributes
,
context
:
nil
)
.
size
var
textHeight
=
size
.
height
if
textHeight
>
40
{
textHeight
=
40
}
let
imageSize
=
getImageSize
(
model
.
url
)
var
imageHeight
=
0.0
if
imageSize
.
width
==
0
{
imageHeight
=
width
}
else
{
imageHeight
=
width
*
imageSize
.
height
/
imageSize
.
width
if
imageHeight
>
280
{
imageHeight
=
280
}
}
let
totalHeight
=
imageHeight
+
textHeight
+
46
return
CGSize
(
width
:
width
,
height
:
totalHeight
)
}
}
galaxy/galaxy/Classes/Modules/Mine(我的)/C/YHAboutUsViewController.swift
View file @
37c0dda8
...
...
@@ -13,16 +13,16 @@ struct AboutAdvantageItem {
var
iconName
:
String
var
title
:
String
var
detail
:
String
var
url
:
String
}
class
YHAboutUsViewController
:
YHBaseViewController
{
lazy
var
items
=
{
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"ABC"
.
local
,
detail
:
"大数据精准匹配,专属方案获批率更高"
),
AboutAdvantageItem
(
iconName
:
"about_response"
,
title
:
"快速响应"
,
detail
:
"身份规划师一对一专业服务,第一时间响应您的需求"
),
AboutAdvantageItem
(
iconName
:
"about_service"
,
title
:
"专业服务"
,
detail
:
"5年经验+英语专8级文案导师团队倾力支持"
),
AboutAdvantageItem
(
iconName
:
"about_service2"
,
title
:
"精准匹配"
,
detail
:
"香港专才、香港留学获批常年保持90%以上"
)]
return
[
AboutAdvantageItem
(
iconName
:
"about_match"
,
title
:
"ABC"
.
local
,
detail
:
"大数据精准匹配,专属方案获批率更高"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_response"
,
title
:
"快速响应"
,
detail
:
"身份规划师一对一专业服务,第一时间响应您的需求"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_service"
,
title
:
"专业服务"
,
detail
:
"5年经验+英语专8级文案导师团队倾力支持"
,
url
:
""
),
AboutAdvantageItem
(
iconName
:
"about_service2"
,
title
:
"精准匹配"
,
detail
:
"香港专才、香港留学获批常年保持90%以上"
,
url
:
""
)]
}()
lazy
var
collectView
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment