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
3458b157
Commit
3458b157
authored
Jan 30, 2024
by
pete谢兆麟
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'xiezhaolin' into develop
parents
219f73a0
9d754662
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1048 additions
and
11 deletions
+1048
-11
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+40
-0
YHMainApplicantInformationViewController.swift
...ormation/C/YHMainApplicantInformationViewController.swift
+1
-11
YHAddressModel.swift
...plicantInformation/V/YHAddressPicker/YHAddressModel.swift
+49
-0
YHAddressPickView.swift
...cantInformation/V/YHAddressPicker/YHAddressPickView.swift
+344
-0
YHAddressPickViewTableViewCell.swift
...on/V/YHAddressPicker/YHAddressPickViewTableViewCell.swift
+57
-0
YHAddressPresentAnimated.swift
...ormation/V/YHAddressPicker/YHAddressPresentAnimated.swift
+71
-0
YHAddressViewController.swift
...formation/V/YHAddressPicker/YHAddressViewController.swift
+113
-0
area.plist
...流程)/MainApplicantInformation/V/YHAddressPicker/area.plist
+0
-0
YHDatePickView.swift
...ocess(流程)/MainApplicantInformation/V/YHDatePickView.swift
+268
-0
YHImagePickerView.swift
...ss(流程)/MainApplicantInformation/V/YHImagePickerView.swift
+105
-0
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
3458b157
...
...
@@ -51,6 +51,14 @@
0468D44F2B634E8B00CFB916
/* YHMainApplicantInformationViewModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D44E2B634E8A00CFB916
/* YHMainApplicantInformationViewModel.swift */
;
};
0468D4512B67721700CFB916
/* YHMainInformationCardTableViewCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4502B67721700CFB916
/* YHMainInformationCardTableViewCell.swift */
;
};
0468D4532B6782BE00CFB916
/* YHCardExampleView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4522B6782BE00CFB916
/* YHCardExampleView.swift */
;
};
0468D4552B6889A500CFB916
/* YHDatePickView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4542B6889A500CFB916
/* YHDatePickView.swift */
;
};
0468D4772B68A08600CFB916
/* area.plist in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4712B68A08600CFB916
/* area.plist */
;
};
0468D4782B68A08600CFB916
/* YHAddressModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4722B68A08600CFB916
/* YHAddressModel.swift */
;
};
0468D4792B68A08600CFB916
/* YHAddressViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4732B68A08600CFB916
/* YHAddressViewController.swift */
;
};
0468D47A2B68A08600CFB916
/* YHAddressPickViewTableViewCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4742B68A08600CFB916
/* YHAddressPickViewTableViewCell.swift */
;
};
0468D47B2B68A08600CFB916
/* YHAddressPresentAnimated.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4752B68A08600CFB916
/* YHAddressPresentAnimated.swift */
;
};
0468D47C2B68A08600CFB916
/* YHAddressPickView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D4762B68A08600CFB916
/* YHAddressPickView.swift */
;
};
0468D47E2B68CEA200CFB916
/* YHImagePickerView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0468D47D2B68CEA200CFB916
/* YHImagePickerView.swift */
;
};
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
,
);
};
};
049A48A82B49417300D0C641
/* YHAboutUsViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
049A48A72B49417300D0C641
/* YHAboutUsViewController.swift */
;
};
...
...
@@ -238,6 +246,14 @@
0468D44E2B634E8A00CFB916
/* YHMainApplicantInformationViewModel.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMainApplicantInformationViewModel.swift
;
sourceTree
=
"<group>"
;
};
0468D4502B67721700CFB916
/* YHMainInformationCardTableViewCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMainInformationCardTableViewCell.swift
;
sourceTree
=
"<group>"
;
};
0468D4522B6782BE00CFB916
/* YHCardExampleView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHCardExampleView.swift
;
sourceTree
=
"<group>"
;
};
0468D4542B6889A500CFB916
/* YHDatePickView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHDatePickView.swift
;
sourceTree
=
"<group>"
;
};
0468D4712B68A08600CFB916
/* area.plist */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
text.plist.xml
;
path
=
area.plist
;
sourceTree
=
"<group>"
;
};
0468D4722B68A08600CFB916
/* YHAddressModel.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAddressModel.swift
;
sourceTree
=
"<group>"
;
};
0468D4732B68A08600CFB916
/* YHAddressViewController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAddressViewController.swift
;
sourceTree
=
"<group>"
;
};
0468D4742B68A08600CFB916
/* YHAddressPickViewTableViewCell.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAddressPickViewTableViewCell.swift
;
sourceTree
=
"<group>"
;
};
0468D4752B68A08600CFB916
/* YHAddressPresentAnimated.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAddressPresentAnimated.swift
;
sourceTree
=
"<group>"
;
};
0468D4762B68A08600CFB916
/* YHAddressPickView.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAddressPickView.swift
;
sourceTree
=
"<group>"
;
};
0468D47D2B68CEA200CFB916
/* YHImagePickerView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHImagePickerView.swift
;
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>"
;
};
049A48A72B49417300D0C641
/* YHAboutUsViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAboutUsViewController.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -516,12 +532,15 @@
0468D4402B61F6C400CFB916
/* V */
=
{
isa
=
PBXGroup
;
children
=
(
0468D4702B68A08600CFB916
/* YHAddressPicker */
,
0468D4442B62064700CFB916
/* YHStepView.swift */
,
0468D4462B624AF000CFB916
/* YHBottomNextView.swift */
,
0468D4482B6258A900CFB916
/* YHItemView.swift */
,
0468D44C2B62643700CFB916
/* YHMainInformationTableViewCell.swift */
,
0468D4502B67721700CFB916
/* YHMainInformationCardTableViewCell.swift */
,
0468D4522B6782BE00CFB916
/* YHCardExampleView.swift */
,
0468D4542B6889A500CFB916
/* YHDatePickView.swift */
,
0468D47D2B68CEA200CFB916
/* YHImagePickerView.swift */
,
);
path
=
V
;
sourceTree
=
"<group>"
;
...
...
@@ -534,6 +553,19 @@
path
=
VM
;
sourceTree
=
"<group>"
;
};
0468D4702B68A08600CFB916
/* YHAddressPicker */
=
{
isa
=
PBXGroup
;
children
=
(
0468D4712B68A08600CFB916
/* area.plist */
,
0468D4722B68A08600CFB916
/* YHAddressModel.swift */
,
0468D4732B68A08600CFB916
/* YHAddressViewController.swift */
,
0468D4742B68A08600CFB916
/* YHAddressPickViewTableViewCell.swift */
,
0468D4752B68A08600CFB916
/* YHAddressPresentAnimated.swift */
,
0468D4762B68A08600CFB916
/* YHAddressPickView.swift */
,
);
path
=
YHAddressPicker
;
sourceTree
=
"<group>"
;
};
04808C022B4686510056D53C
/* Frameworks */
=
{
isa
=
PBXGroup
;
children
=
(
...
...
@@ -1112,6 +1144,7 @@
04808C062B4686510056D53C
/* ATAuthSDK.bundle in Resources */
,
A5C5B2EE2B4F9B8800A7C5D1
/* Localizable.xcstrings in Resources */
,
A58951C52B398D1000225C19
/* Launch Screen.storyboard in Resources */
,
0468D4772B68A08600CFB916
/* area.plist in Resources */
,
A51044182B493675006B60BB
/* README.md in Resources */
,
A5573EDB2B317C0000D98EC0
/* Assets.xcassets in Resources */
,
);
...
...
@@ -1219,6 +1252,7 @@
A5FD63C52B637EE000D1D9DA
/* YHSubmitAllInfoCheckView.swift in Sources */
,
A5ACE9442B4564F7002C94D2
/* Array+Extension.swift in Sources */
,
0468D4282B50D4AF00CFB916
/* YHPrivacyAlertView.swift in Sources */
,
0468D47A2B68A08600CFB916
/* YHAddressPickViewTableViewCell.swift in Sources */
,
0468D4342B56587B00CFB916
/* YHOSSManager.swift in Sources */
,
A5C382D12B5FAAB300C5E65C
/* YHContactItemModel.swift in Sources */
,
A5ACE9522B4564F7002C94D2
/* YHServiceCenterMainViewController.swift in Sources */
,
...
...
@@ -1235,6 +1269,7 @@
041B528B2B5E15F1007EBCEB
/* YHFormItemQuestionCell.swift in Sources */
,
A5ACE94B2B4564F7002C94D2
/* BsHUDRotatingImageView.swift in Sources */
,
041B52DD2B60A889007EBCEB
/* YHTest.swift in Sources */
,
0468D47E2B68CEA200CFB916
/* YHImagePickerView.swift in Sources */
,
A5ACE94F2B4564F7002C94D2
/* YhOverlayView.swift in Sources */
,
A53026902B4E6F2700F35102
/* YHHomeCustomCell.swift in Sources */
,
0468D44F2B634E8B00CFB916
/* YHMainApplicantInformationViewModel.swift in Sources */
,
...
...
@@ -1247,6 +1282,7 @@
0468D4432B61F76800CFB916
/* YHMainApplicantInformationViewController.swift in Sources */
,
0468D4262B495A5400CFB916
/* YHPickPhoneAddressViewController.swift in Sources */
,
A5C5B32D2B57D66000A7C5D1
/* YHBbxCollectionViewCell.swift in Sources */
,
0468D47C2B68A08600CFB916
/* YHAddressPickView.swift in Sources */
,
A5FD63D82B6603A500D1D9DA
/* YHScoreResultView.swift in Sources */
,
A5ACE9342B4564F7002C94D2
/* YHAllApiName.swift in Sources */
,
A5ACE9502B4564F7002C94D2
/* YhCacheTool.swift in Sources */
,
...
...
@@ -1297,7 +1333,9 @@
042FBBBD2B63519C00F9DE23
/* YHFormItemSelectSheetCell.swift in Sources */
,
A5FD63C32B63438A00D1D9DA
/* YHContactMainItemStatusModel.swift in Sources */
,
041B52982B5E8EA0007EBCEB
/* YHFamilyMemberFormVC.swift in Sources */
,
0468D47B2B68A08600CFB916
/* YHAddressPresentAnimated.swift in Sources */
,
A5C382CF2B5F9A9100C5E65C
/* YHServiceCenterMainViewModel.swift in Sources */
,
0468D4782B68A08600CFB916
/* YHAddressModel.swift in Sources */
,
A5C5B2EA2B4ECA4D00A7C5D1
/* YHDavidModel0.swift in Sources */
,
A5ACE9572B4564F7002C94D2
/* YHBasicContentView.swift in Sources */
,
042FBBC92B64DC8900F9DE23
/* YHFormItemExpireDateCell.swift in Sources */
,
...
...
@@ -1307,11 +1345,13 @@
A5ACE9582B4564F7002C94D2
/* YHNoDataTipView.swift in Sources */
,
042FBBBB2B62806D00F9DE23
/* YHCertificateViewController.swift in Sources */
,
042FBBC72B64CFBF00F9DE23
/* YHChildInitialInfoVC.swift in Sources */
,
0468D4792B68A08600CFB916
/* YHAddressViewController.swift in Sources */
,
A5ACE9562B4564F7002C94D2
/* YHBouncesContentView.swift in Sources */
,
042FBBCB2B65058000F9DE23
/* YHChildBasicInfoVC.swift in Sources */
,
A5ACE9302B4564F7002C94D2
/* Algorithm.swift in Sources */
,
A5C5B32B2B57D17600A7C5D1
/* YHDavidCell5.swift in Sources */
,
A5ACE92D2B4564F7002C94D2
/* YHLoginPrivacyView.swift in Sources */
,
0468D4552B6889A500CFB916
/* YHDatePickView.swift in Sources */
,
A5C5B3272B57C8D500A7C5D1
/* YHDavidCell2.swift in Sources */
,
A5FD63D62B65FCA400D1D9DA
/* YHScoreTitleView.swift in Sources */
,
A5FD63DA2B66060800D1D9DA
/* YHScoreOptionsView.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/C/YHMainApplicantInformationViewController.swift
View file @
3458b157
...
...
@@ -89,16 +89,6 @@ class YHMainApplicantInformationViewController: YHBaseViewController {
make
.
left
.
right
.
bottom
.
equalTo
(
view
)
make
.
height
.
equalTo
(
k_Height_safeAreaInsetsBottom
()
+
64
)
}
stepView
.
isHidden
=
true
tableView
.
isHidden
=
true
bottomView
.
isHidden
=
true
let
datePicker
=
UIDatePicker
(
frame
:
CGRect
(
x
:
0
,
y
:
150
,
width
:
self
.
view
.
bounds
.
width
,
height
:
200
))
datePicker
.
datePickerMode
=
.
dateAndTime
// datePicker.addTarget(self, action: #selector(handleDateChange), for: .valueChanged)
// 将日期选择器添加到视图上
self
.
view
.
addSubview
(
datePicker
)
}
}
...
...
@@ -126,7 +116,7 @@ extension YHMainApplicantInformationViewController: UITableViewDelegate, UITable
if
stepView
.
currentIndex
==
1
{
return
217.0
}
else
{
return
CGFloat
(
count
*
52
+
52
+
14
)
return
CGFloat
(
count
*
52
+
52
+
14
)
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/YHAddressModel.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
Foundation
struct
YHCountryModel
{
var
provincesArray
:
[
YHProvincesModel
]
=
[]
init
(
dic
:
[
String
:[
String
:[
String
]]])
{
for
(
key
,
value
)
in
dic
{
let
model
=
YHProvincesModel
(
name
:
key
,
dic
:
value
)
provincesArray
.
append
(
model
)
provincesArray
.
sort
{
a
,
b
in
a
.
provincesName
<
b
.
provincesName
}
}
}
}
struct
YHProvincesModel
{
var
provincesName
:
String
=
""
var
cityArray
:
[
YHCityModel
]
=
[]
init
(
name
:
String
,
dic
:[
String
:
[
String
]])
{
provincesName
=
name
for
(
key
,
value
)
in
dic
{
let
model
=
YHCityModel
(
name
:
key
,
Arr
:
value
)
cityArray
.
append
(
model
)
cityArray
.
sort
{
a
,
b
in
a
.
cityName
<
b
.
cityName
}
}
}
}
struct
YHCityModel
{
var
cityName
:
String
=
""
var
areaArray
:
[
String
]
=
[]
init
(
name
:
String
,
Arr
:
[
String
])
{
cityName
=
name
for
str
in
Arr
{
areaArray
.
append
(
str
)
}
areaArray
.
sort
(
by
:
<
)
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/YHAddressPickView.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
/// view的三种状态,控制tableView展示效果与数据
enum
YHLocationPickViewTableViewType
{
case
provinces
//省份
case
city
//城市
case
area
//地区
}
class
YHAddressPickView
:
UIView
{
/// 返回数据回调
public
var
backLocationString
:
((
String
,
String
,
String
,
String
)
->
Void
)?
/// 退出回调
public
var
backOnClickCancel
:
(()
->
Void
)?
/// title选中以及下滑线颜色
public
var
selectColor
:
UIColor
private
var
tableViewType
:
YHLocationPickViewTableViewType
=
.
provinces
{
didSet
{
switch
tableViewType
{
case
.
provinces
:
/// 选择省份时,有上面的热门城市view.没有滚动选择type的titleScrollView.没有已选择label.
self
.
tableView
.
tableHeaderView
=
tableViewHeaderView
self
.
tableView
.
frame
=
CGRect
(
x
:
0
,
y
:
42
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
458
)
self
.
titleSV
.
isHidden
=
true
self
.
leftLabel
.
isHidden
=
true
/// 将所有选中数据清空
self
.
provincesModel
=
nil
self
.
selectedProvince
=
""
self
.
selectedCity
=
""
self
.
selectedArea
=
""
self
.
cityModel
=
nil
// 将titleSV中所有button的title重置
// 并将第一个button设置为选中状态,已保证选择城市后button下的横线有滚动效果.
for
button
in
buttonArr
{
button
.
setTitle
(
"请选择"
,
for
:
.
normal
)
button
.
isSelected
=
false
if
button
.
tag
==
0
{
button
.
isSelected
=
true
}
}
self
.
underLine
.
center
=
CGPoint
(
x
:
self
.
buttonArr
[
1
]
.
center
.
x
,
y
:
self
.
underLine
.
center
.
y
)
self
.
dataArray
=
locationModel
?
.
provincesArray
.
map
({
model
in
model
.
provincesName
})
self
.
tableView
.
reloadData
()
case
.
city
:
/// 选择城市时没有热门城市view,并将titleSV显示出来
self
.
tableView
.
tableHeaderView
=
UIView
()
self
.
tableView
.
frame
=
CGRect
(
x
:
0
,
y
:
136
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
367
)
self
.
titleSV
.
isHidden
=
false
self
.
leftLabel
.
isHidden
=
false
/// 将省份选择保留,将城市与地区数据清空
self
.
selectedCity
=
""
self
.
selectedArea
=
""
self
.
cityModel
=
nil
/// 通过修改titleSV中button的选中状态来修改它的颜色
for
button
in
buttonArr
{
button
.
isSelected
=
false
if
button
.
tag
!=
0
{
button
.
setTitle
(
"请选择"
,
for
:
.
normal
)
}
if
button
.
tag
==
1
{
button
.
isSelected
=
true
}
}
/// 滚动titleSV中button下滚动的Line
UIView
.
animate
(
withDuration
:
0.3
,
animations
:
{()
->
Void
in
self
.
underLine
.
center
=
CGPoint
(
x
:
self
.
buttonArr
[
1
]
.
center
.
x
,
y
:
self
.
underLine
.
center
.
y
)
})
self
.
dataArray
=
provincesModel
?
.
cityArray
.
map
({
model
in
model
.
cityName
})
self
.
tableView
.
reloadData
()
case
.
area
:
/// 选择地区时没有上方热门城市View,有titleSV
self
.
tableView
.
tableHeaderView
=
UIView
()
self
.
tableView
.
frame
=
CGRect
(
x
:
0
,
y
:
136
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
367
)
self
.
titleSV
.
isHidden
=
false
self
.
leftLabel
.
isHidden
=
false
/// 通过修改titleSV中button的选中状态来修改它的颜色
for
button
in
buttonArr
{
button
.
isSelected
=
false
if
button
.
tag
==
2
{
button
.
isSelected
=
true
}
}
/// 滚动titleSV中button下滚动的Line
UIView
.
animate
(
withDuration
:
0.3
,
animations
:
{()
->
Void
in
self
.
underLine
.
center
=
CGPoint
(
x
:
self
.
buttonArr
[
2
]
.
center
.
x
,
y
:
self
.
underLine
.
center
.
y
)
})
self
.
dataArray
=
cityModel
?
.
areaArray
self
.
tableView
.
reloadData
()
}
}
}
/// titleSV上的三个button,通过array保存,更好操作
private
var
buttonArr
=
[
UIButton
]()
/// 已选中的省份
private
var
selectedProvince
=
""
{
didSet
{
/// 当选中赋值时,将titleSV上第一个button.title改为省份名
for
button
in
buttonArr
where
button
.
tag
==
0
{
button
.
setTitle
(
selectedProvince
,
for
:
.
normal
)
}
}
}
/// 已选中城市
private
var
selectedCity
=
""
{
didSet
{
/// 当选中赋值时,将titleSV上第二个button.title改为城市名
for
button
in
buttonArr
where
button
.
tag
==
1
{
button
.
setTitle
(
selectedCity
,
for
:
.
normal
)
}
}
}
private
var
selectedArea
=
""
/// 总城市数据
private
var
locationModel
:
YHCountryModel
?
/// 省份数据
private
var
provincesModel
:
YHProvincesModel
?
/// 城市数据
private
var
cityModel
:
YHCityModel
?
/// 当前tableView使用的数据源
private
var
dataArray
:
[
String
]?
private
let
titleLabel
:
UILabel
=
{
let
label
=
UILabel
(
frame
:
CGRect
(
x
:
(
UIScreen
.
main
.
bounds
.
width
-
100
)
/
2
,
y
:
9
,
width
:
100
,
height
:
24
))
label
.
textColor
=
UIColor
(
red
:
51
/
255
,
green
:
51
/
255
,
blue
:
51
/
255
,
alpha
:
1
)
label
.
text
=
"选择国家地区"
label
.
textAlignment
=
.
center
label
.
font
=
UIFont
.
boldSystemFont
(
ofSize
:
16
)
return
label
}()
private
let
rightCancelButton
:
UIButton
=
{
let
button
=
UIButton
(
frame
:
CGRect
(
x
:
UIScreen
.
main
.
bounds
.
width
-
42
,
y
:
11
,
width
:
18
,
height
:
18
))
button
.
setImage
(
UIImage
(
named
:
"BaseVC_cancel"
),
for
:
.
normal
)
return
button
}()
private
let
leftLabel
:
UILabel
=
{
let
label
=
UILabel
(
frame
:
CGRect
(
x
:
24
,
y
:
43
,
width
:
40
,
height
:
18
))
label
.
text
=
"已选择"
label
.
textColor
=
UIColor
(
red
:
102
/
255
,
green
:
102
/
255
,
blue
:
102
/
255
,
alpha
:
1
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
)
label
.
isHidden
=
true
return
label
}()
/// 热门城市数组,可修改,若修改数量需要修改下方tableViewHeaderView.frame;若修改城市需要修改onClickHotCity()方法来实现点击跳转功能
private
let
hotCityArray
=
[
"北京"
,
"上海"
,
"广州"
,
"深圳"
,
"杭州"
,
"南京"
,
"苏州"
,
"天津"
,
"武汉"
,
"长沙"
,
"重庆"
,
"成都"
]
private
lazy
var
tableViewHeaderView
:
UIView
=
{
let
view
=
UIView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
160
))
let
label
=
UILabel
(
frame
:
CGRect
(
x
:
24
,
y
:
0
,
width
:
50
,
height
:
18
))
label
.
textColor
=
UIColor
(
red
:
102
/
255
,
green
:
102
/
255
,
blue
:
102
/
255
,
alpha
:
1
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
)
label
.
text
=
"热门城市"
view
.
addSubview
(
label
)
for
i
in
0
..<
12
{
let
button
:
UIButton
=
UIButton
(
frame
:
CGRect
(
x
:
CGFloat
(
24
+
80
*
(
i
%
4
)),
y
:
CGFloat
(
28
+
40
*
(
i
/
4
)),
width
:
80
,
height
:
40
))
button
.
setTitle
(
hotCityArray
[
i
],
for
:
.
normal
)
button
.
setTitleColor
(
UIColor
(
red
:
102
/
255
,
green
:
102
/
255
,
blue
:
102
/
255
,
alpha
:
1
),
for
:
.
normal
)
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
)
button
.
addTarget
(
self
,
action
:
#selector(
onClickHotCity(sender:)
)
,
for
:
.
touchUpInside
)
button
.
tag
=
i
view
.
addSubview
(
button
)
}
return
view
}()
/// 上方选择省份城市地区的滚动scrollView
private
var
titleSV
:
UIScrollView
!
/// titleSV上button下的滚动线
private
var
underLine
=
UIView
()
private
var
tableView
=
UITableView
(
frame
:
CGRect
(
x
:
0
,
y
:
42
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
458
))
init
(
frame
:
CGRect
,
selectColor
:
UIColor
,
selectedProvince
:
String
?
=
nil
,
selectedCity
:
String
?
=
nil
)
{
self
.
selectColor
=
selectColor
super
.
init
(
frame
:
frame
)
initLocationData
()
drawMyView
()
setHotCityData
(
province
:
selectedProvince
,
city
:
selectedCity
)
}
required
init
?(
coder
aDecoder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
private
func
drawMyView
()
{
self
.
backgroundColor
=
UIColor
.
white
buildTitleScrollView
()
drawTableView
()
self
.
addSubview
(
titleLabel
)
self
.
addSubview
(
rightCancelButton
)
rightCancelButton
.
addTarget
(
self
,
action
:
#selector(
onClickCancelButton
)
,
for
:
.
touchUpInside
)
self
.
addSubview
(
leftLabel
)
}
private
func
buildTitleScrollView
()
{
if
titleSV
!=
nil
{
titleSV
.
removeFromSuperview
()
}
buttonArr
=
[]
titleSV
=
UIScrollView
(
frame
:
CGRect
(
x
:
0
,
y
:
72
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
44
))
self
.
underLine
=
UIView
(
frame
:
CGRect
(
x
:
0
,
y
:
40
,
width
:
30
,
height
:
2
))
self
.
underLine
.
backgroundColor
=
selectColor
for
i
in
0
..<
3
{
let
button
=
UIButton
(
frame
:
CGRect
(
x
:
24
+
CGFloat
(
i
)
*
(
UIScreen
.
main
.
bounds
.
width
-
47
)
/
3
,
y
:
0
,
width
:
UIScreen
.
main
.
bounds
.
width
/
3
,
height
:
44
))
button
.
tag
=
Int
(
i
)
if
i
==
1
{
button
.
isSelected
=
true
underLine
.
center
.
x
=
button
.
center
.
x
}
button
.
setTitle
(
"请选择"
,
for
:
.
normal
)
button
.
setTitleColor
(
UIColor
(
red
:
51
/
255
,
green
:
51
/
255
,
blue
:
51
/
255
,
alpha
:
1
),
for
:
.
normal
)
button
.
setTitleColor
(
selectColor
,
for
:
.
selected
)
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
)
button
.
titleLabel
?
.
adjustsFontSizeToFitWidth
=
true
button
.
addTarget
(
self
,
action
:
#selector(
onClickTitlebutton(sender:)
)
,
for
:
.
touchUpInside
)
buttonArr
.
append
(
button
)
titleSV
.
addSubview
(
button
)
}
titleSV
.
showsVerticalScrollIndicator
=
false
titleSV
.
addSubview
(
self
.
underLine
)
titleSV
.
contentSize
=
CGSize
(
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
44
)
titleSV
.
isHidden
=
true
self
.
addSubview
(
titleSV
)
}
private
func
drawTableView
()
{
self
.
addSubview
(
tableView
)
tableView
.
delegate
=
self
tableView
.
dataSource
=
self
tableView
.
separatorStyle
=
.
none
tableView
.
tableHeaderView
=
tableViewHeaderView
tableView
.
showsVerticalScrollIndicator
=
false
tableView
.
register
(
YHAddressPickViewTableViewCell
.
self
,
forCellReuseIdentifier
:
YHAddressPickViewTableViewCell
.
identifier
)
tableView
.
register
(
YHAddressPickViewFirstTableViewCell
.
self
,
forCellReuseIdentifier
:
YHAddressPickViewFirstTableViewCell
.
identifier
)
}
/// 退出
@objc
private
func
onClickCancelButton
()
{
if
self
.
backOnClickCancel
!=
nil
{
backOnClickCancel
!
()
}
}
@objc
private
func
onClickHotCity
(
sender
:
UIButton
)
{
let
hotProvince
=
[
"北京市"
,
"上海市"
,
"广东省"
,
"广东省"
,
"浙江省"
,
"江苏省"
,
"江苏省"
,
"天津市"
,
"湖北省"
,
"湖南省"
,
"重庆市"
,
"四川省"
]
let
hotCity
=
[
"北京市"
,
"上海市"
,
"广州市"
,
"深圳市"
,
"杭州市"
,
"南京市"
,
"苏州市"
,
"天津市"
,
"武汉市"
,
"长沙市"
,
"重庆市"
,
"成都市"
]
let
tag
=
sender
.
tag
setHotCityData
(
province
:
hotProvince
[
tag
],
city
:
hotCity
[
tag
])
self
.
tableViewType
=
.
area
}
/// 选择view.type
@objc
private
func
onClickTitlebutton
(
sender
:
UIButton
)
{
guard
!
sender
.
isSelected
else
{
return
}
switch
sender
.
tag
{
case
0
:
self
.
tableViewType
=
.
provinces
case
1
:
self
.
tableViewType
=
.
city
default
:
break
}
}
/// 点击热门城市中的城市
private
func
setHotCityData
(
province
:
String
?,
city
:
String
?)
{
if
let
province
=
province
{
if
let
provincesModel
=
self
.
locationModel
?
.
provincesArray
.
first
(
where
:
{
model
in
model
.
provincesName
==
province
})
{
self
.
provincesModel
=
provincesModel
self
.
selectedProvince
=
province
self
.
tableViewType
=
.
city
if
let
city
=
city
{
if
let
cityModel
=
self
.
provincesModel
?
.
cityArray
.
first
(
where
:
{
model
in
model
.
cityName
==
city
})
{
self
.
cityModel
=
cityModel
self
.
selectedCity
=
city
self
.
tableViewType
=
.
area
}
}
}
}
}
/// 从area.plist获取全部地区数据
private
func
initLocationData
()
{
guard
let
dic
=
NSDictionary
(
contentsOfFile
:
Bundle
.
main
.
path
(
forResource
:
"area"
,
ofType
:
"plist"
)
??
""
)
as?
[
String
:[
String
:[
String
]]]
else
{
return
}
locationModel
=
YHCountryModel
(
dic
:
dic
)
dataArray
=
locationModel
?
.
provincesArray
.
map
({
$0
.
provincesName
})
}
}
// MARK: - tableViewDelegate
extension
YHAddressPickView
:
UITableViewDelegate
,
UITableViewDataSource
{
func
tableView
(
_
tableView
:
UITableView
,
heightForRowAt
indexPath
:
IndexPath
)
->
CGFloat
{
return
40
}
func
tableView
(
_
tableView
:
UITableView
,
numberOfRowsInSection
section
:
Int
)
->
Int
{
return
(
self
.
dataArray
?
.
count
)
!
+
1
}
func
tableView
(
_
tableView
:
UITableView
,
cellForRowAt
indexPath
:
IndexPath
)
->
UITableViewCell
{
if
indexPath
.
row
==
0
{
guard
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHAddressPickViewFirstTableViewCell
.
identifier
)
as?
YHAddressPickViewFirstTableViewCell
else
{
return
YHAddressPickViewFirstTableViewCell
()
}
cell
.
label
.
text
=
"请选择"
return
cell
}
guard
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHAddressPickViewTableViewCell
.
identifier
)
as?
YHAddressPickViewTableViewCell
else
{
return
YHAddressPickViewTableViewCell
()
}
cell
.
label
.
text
=
self
.
dataArray
?[
indexPath
.
row
-
1
]
return
cell
}
func
tableView
(
_
tableView
:
UITableView
,
didSelectRowAt
indexPath
:
IndexPath
)
{
guard
indexPath
.
row
!=
0
else
{
return
}
switch
tableViewType
{
case
.
provinces
:
/// 当前为选择省份状态时,保存选中省份,刷新状态为选择城市
selectedProvince
=
self
.
locationModel
?
.
provincesArray
[
indexPath
.
row
-
1
]
.
provincesName
??
""
self
.
provincesModel
=
self
.
locationModel
?
.
provincesArray
.
first
(
where
:
{
$0
.
provincesName
==
selectedProvince
})
self
.
tableViewType
=
.
city
case
.
city
:
/// 当前为选择城市状态时,保存选中城市,刷新状态为选择地区
selectedCity
=
(
self
.
provincesModel
?
.
cityArray
[
indexPath
.
row
-
1
])?
.
cityName
??
""
self
.
cityModel
=
self
.
provincesModel
?
.
cityArray
.
first
(
where
:
{
$0
.
cityName
==
selectedCity
})
self
.
tableViewType
=
.
area
case
.
area
:
/// 当前为选择地区状态时,保存选中地区,执行回调block.将选中数据回调
selectedArea
=
self
.
dataArray
!
[
indexPath
.
row
-
1
]
let
selectLocation
=
selectedProvince
+
" "
+
selectedCity
+
" "
+
selectedArea
if
backLocationString
!=
nil
{
backLocationString
!
(
selectLocation
,
selectedProvince
,
selectedCity
,
selectedArea
)
}
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/YHAddressPickViewTableViewCell.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHAddressPickViewTableViewCell
:
UITableViewCell
{
static
let
identifier
=
"YHAddressPickViewTableViewCell"
let
label
:
UILabel
=
{
let
label
=
UILabel
(
frame
:
CGRect
(
x
:
42
,
y
:
8
,
width
:
200
,
height
:
24
))
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
)
label
.
textColor
=
UIColor
(
red
:
51
/
255
,
green
:
51
/
255
,
blue
:
51
/
255
,
alpha
:
1
)
return
label
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
self
.
selectionStyle
=
.
none
drawMyView
()
}
required
init
?(
coder
aDecoder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
private
func
drawMyView
()
{
self
.
addSubview
(
label
)
}
}
class
YHAddressPickViewFirstTableViewCell
:
UITableViewCell
{
static
let
identifier
=
"YHAddressPickViewFirstTableViewCell"
let
label
:
UILabel
=
{
let
label
=
UILabel
(
frame
:
CGRect
(
x
:
24
,
y
:
11.5
,
width
:
100
,
height
:
17
))
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
)
label
.
textColor
=
UIColor
(
red
:
102
/
255
,
green
:
102
/
255
,
blue
:
102
/
255
,
alpha
:
1
)
return
label
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
self
.
selectionStyle
=
.
none
drawMyView
()
}
required
init
?(
coder
aDecoder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
private
func
drawMyView
()
{
self
.
addSubview
(
label
)
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/YHAddressPresentAnimated.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
enum
YHAddressPickerPresentAnimateType
{
case
present
//被推出时
case
dismiss
//取消时
}
//EWAddressPickerViewController的推出和取消动画
class
YHAddressPickerPresentAnimated
:
NSObject
,
UIViewControllerAnimatedTransitioning
{
var
type
:
YHAddressPickerPresentAnimateType
=
.
present
init
(
type
:
YHAddressPickerPresentAnimateType
)
{
self
.
type
=
type
}
/// 动画时间
func
transitionDuration
(
using
transitionContext
:
UIViewControllerContextTransitioning
?)
->
TimeInterval
{
return
0.3
}
/// 动画效果
func
animateTransition
(
using
transitionContext
:
UIViewControllerContextTransitioning
)
{
switch
type
{
case
.
present
:
guard
let
toVC
:
YHAddressViewController
=
transitionContext
.
viewController
(
forKey
:
.
to
)
as?
YHAddressViewController
else
{
return
}
let
toView
=
toVC
.
view
let
containerView
=
transitionContext
.
containerView
containerView
.
addSubview
(
toView
!
)
toVC
.
containV
.
transform
=
CGAffineTransform
(
translationX
:
0
,
y
:
(
toVC
.
containV
.
frame
.
height
))
UIView
.
animate
(
withDuration
:
0.25
,
animations
:
{
/// 背景变色
toVC
.
backgroundView
.
alpha
=
1.0
/// addresspicker向上推出
toVC
.
containV
.
transform
=
CGAffineTransform
(
translationX
:
0
,
y
:
-
10
)
})
{
(
_
)
in
UIView
.
animate
(
withDuration
:
0.2
,
animations
:
{
/// transform初始化
toVC
.
containV
.
transform
=
CGAffineTransform
.
identity
},
completion
:
{
(
_
)
in
transitionContext
.
completeTransition
(
true
)
})
}
case
.
dismiss
:
guard
let
toVC
:
YHAddressViewController
=
transitionContext
.
viewController
(
forKey
:
.
from
)
as?
YHAddressViewController
else
{
return
}
UIView
.
animate
(
withDuration
:
0.25
,
animations
:
{
toVC
.
backgroundView
.
alpha
=
0.0
/// addresspicker向下推回
toVC
.
containV
.
transform
=
CGAffineTransform
(
translationX
:
0
,
y
:
(
toVC
.
containV
.
frame
.
height
))
})
{
(
_
)
in
transitionContext
.
completeTransition
(
true
)
}
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/YHAddressViewController.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
/*
let addressPicker = YHAddressViewController( selectProvince: "上海市", selectCity: "" )
/*** 可使用这种init方法自定制选中颜色,不填写selectColor默认颜色为UIColor(red: 79/255, green: 176/255, blue: 255/255, alpha: 1),蓝色
let addressPicker = EWAddressViewController(selectColor: UIColor.yellow)
*/
// 返回选择数据,地址,省,市,区
addressPicker.backLocationStringController = { (address,province,city,area) in
}
self.present(addressPicker, animated: true, completion: nil)
*/
import
UIKit
///默认选中颜色
let
defaultColor
=
UIColor
(
red
:
79
/
255
,
green
:
176
/
255
,
blue
:
255
/
255
,
alpha
:
1
)
class
YHAddressViewController
:
UIViewController
{
public
var
backLocationStringController
:
((
String
,
String
,
String
,
String
)
->
Void
)?
///title选中颜色
public
var
selectColor
:
UIColor
public
var
selectProvince
:
String
?
public
var
selectCity
:
String
?
public
lazy
var
containV
:
YHAddressPickView
=
{
let
view
=
YHAddressPickView
(
frame
:
CGRect
(
x
:
0
,
y
:
UIScreen
.
main
.
bounds
.
height
-
550
,
width
:
UIScreen
.
main
.
bounds
.
width
,
height
:
550
),
selectColor
:
selectColor
,
selectedProvince
:
selectProvince
,
selectedCity
:
selectCity
)
view
.
backOnClickCancel
=
{
[
weak
self
]
in
self
?
.
onClickCancel
()
}
/// 成功选择后将数据回调,并推出视图
view
.
backLocationString
=
{[
weak
self
]
(
address
,
province
,
city
,
area
)
in
if
self
?
.
backLocationStringController
!=
nil
{
self
?
.
backLocationStringController
!
(
address
,
province
,
city
,
area
)
self
?
.
onClickCancel
()
}
}
return
view
}()
public
var
backgroundView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.4
)
return
view
}()
init
(
selectColor
:
UIColor
=
defaultColor
,
selectProvince
:
String
?
=
nil
,
selectCity
:
String
?
=
nil
)
{
self
.
selectColor
=
selectColor
self
.
selectProvince
=
selectProvince
self
.
selectCity
=
selectCity
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
self
.
view
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.3
)
}
required
init
?(
coder
aDecoder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
drawMyView
()
// Do any additional setup after loading the view.
}
private
func
drawMyView
()
{
self
.
view
.
insertSubview
(
self
.
backgroundView
,
at
:
0
)
self
.
providesPresentationContextTransitionStyle
=
true
self
.
definesPresentationContext
=
true
self
.
modalPresentationStyle
=
.
custom
//viewcontroller弹出后之前控制器页面不隐藏 .custom代表自定义
self
.
view
.
addSubview
(
self
.
containV
)
// 转场动画代理
self
.
transitioningDelegate
=
self
}
///点击推出
override
func
touchesBegan
(
_
touches
:
Set
<
UITouch
>
,
with
event
:
UIEvent
?)
{
super
.
touchesBegan
(
touches
,
with
:
event
)
let
currentPoint
=
touches
.
first
?
.
location
(
in
:
self
.
view
)
if
!
self
.
containV
.
frame
.
contains
(
currentPoint
??
CGPoint
())
{
self
.
dismiss
(
animated
:
true
,
completion
:
nil
)
}
}
// MARK: onClick
@objc
private
func
onClickCancel
()
{
self
.
dismiss
(
animated
:
true
,
completion
:
nil
)
}
override
func
didReceiveMemoryWarning
()
{
super
.
didReceiveMemoryWarning
()
// Dispose of any resources that can be recreated.
}
}
// MARK: - 转场动画delegate
extension
YHAddressViewController
:
UIViewControllerTransitioningDelegate
{
/// 推入动画
func
animationController
(
forPresented
presented
:
UIViewController
,
presenting
:
UIViewController
,
source
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
let
animated
=
YHAddressPickerPresentAnimated
(
type
:
.
present
)
return
animated
}
/// 推出动画
func
animationController
(
forDismissed
dismissed
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
let
animated
=
YHAddressPickerPresentAnimated
(
type
:
.
dismiss
)
return
animated
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHAddressPicker/area.plist
0 → 100755
View file @
3458b157
This source diff could not be displayed because it is too large. You can
view the blob
instead.
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHDatePickView.swift
0 → 100644
View file @
3458b157
//
// YHDatePickView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
/* 使用例子
let view = YHDatePickView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.type = .yyyymm
view.backDate = { [weak self] date in
}
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
*/
import
UIKit
enum
YHDateType
:
Int
{
case
yyyymmdd
=
0
case
yyyymm
=
1
case
yyyy
=
2
}
class
YHDatePickView
:
UIView
{
var
backDate
:
((
String
)
->
Void
)?
var
centerView
:
UIView
!
var
titleLabel
:
UILabel
!
var
closeButton
:
UIButton
!
var
sureButton
:
UIButton
!
var
lineView
:
UIView
!
var
pickerView
:
UIPickerView
!
private
var
currentDateCom
:
DateComponents
=
Calendar
.
current
.
dateComponents
([
.
year
,
.
month
,
.
day
],
from
:
Date
())
var
type
:
YHDateType
?
{
didSet
{
guard
let
type
=
type
else
{
return
}
switch
type
{
case
.
yyyymmdd
:
pickerView
.
reloadAllComponents
()
case
.
yyyymm
:
pickerView
.
reloadAllComponents
()
case
.
yyyy
:
pickerView
.
reloadAllComponents
()
}
}
}
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
backgroundColor
=
UIColor
(
white
:
0.5
,
alpha
:
0.1
)
let
tap
=
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
handleTap
)
)
tap
.
delegate
=
self
addGestureRecognizer
(
tap
)
setView
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setView
()
{
backgroundColor
=
UIColor
(
hex
:
0x0000
,
alpha
:
0.5
)
centerView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
.
white
view
.
layer
.
cornerRadius
=
16
return
view
}()
addSubview
(
centerView
)
centerView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
bottom
.
equalToSuperview
()
make
.
height
.
equalTo
(
322
)
}
titleLabel
=
{
let
label
=
UILabel
()
label
.
text
=
"选择出生日期"
label
.
font
=
kFont
(
size
:
17
)
label
.
textColor
=
UIColor
(
hex
:
0x222222
)
label
.
textAlignment
=
.
center
return
label
}()
centerView
.
addSubview
(
titleLabel
)
titleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
16
)
make
.
height
.
equalTo
(
21
)
make
.
width
.
equalTo
(
200
)
make
.
centerX
.
equalToSuperview
()
}
closeButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
titleLabel
?
.
font
=
kBoldFont
(
size
:
14
)
button
.
contentHorizontalAlignment
=
.
center
button
.
setTitle
(
"取消"
,
for
:
.
normal
)
button
.
setTitleColor
(
UIColor
(
hex
:
0x222222
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
dismiss
)
,
for
:
.
touchUpInside
)
return
button
}()
centerView
.
addSubview
(
closeButton
)
closeButton
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
21
)
make
.
height
.
equalTo
(
20
)
make
.
width
.
equalTo
(
30
)
make
.
top
.
equalTo
(
18
)
}
sureButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
titleLabel
?
.
font
=
kBoldFont
(
size
:
14
)
button
.
contentHorizontalAlignment
=
.
center
button
.
setTitle
(
"确定"
,
for
:
.
normal
)
button
.
setTitleColor
(
UIColor
(
hex
:
0x4487f9
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
sure
)
,
for
:
.
touchUpInside
)
return
button
}()
centerView
.
addSubview
(
sureButton
)
sureButton
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalTo
(
-
21
)
make
.
height
.
equalTo
(
20
)
make
.
width
.
equalTo
(
30
)
make
.
top
.
equalTo
(
18
)
}
lineView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
hex
:
0xf0f0f0
)
return
view
}()
centerView
.
addSubview
(
lineView
)
lineView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
18
)
make
.
top
.
equalTo
(
52
)
make
.
height
.
equalTo
(
1
)
make
.
right
.
equalTo
(
-
18
)
}
pickerView
=
{
let
picker
=
UIPickerView
()
picker
.
delegate
=
self
picker
.
dataSource
=
self
picker
.
backgroundColor
=
UIColor
.
clear
picker
.
clipsToBounds
=
true
return
picker
}()
centerView
.
addSubview
(
pickerView
)
pickerView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
16
)
make
.
top
.
equalTo
(
68
)
make
.
height
.
equalTo
(
220
)
make
.
right
.
equalTo
(
-
16
)
}
}
@objc
private
func
handleTap
(
_
sender
:
AnyObject
?)
{
print
(
"处理点击手势"
)
dismiss
()
}
@objc
func
dismiss
()
{
removeFromSuperview
()
}
@objc
func
sure
()
{
guard
let
type
=
type
else
{
return
}
var
date
=
""
switch
type
{
case
.
yyyymmdd
:
date
=
String
(
format
:
"%02ld%02ld%02ld"
,
(
self
.
currentDateCom
.
year
!
)
-
self
.
pickerView
.
selectedRow
(
inComponent
:
0
),
self
.
pickerView
.
selectedRow
(
inComponent
:
1
)
+
1
,
self
.
pickerView
.
selectedRow
(
inComponent
:
2
)
+
1
)
case
.
yyyymm
:
date
=
String
(
format
:
"%02ld%02ld"
,
(
self
.
currentDateCom
.
year
!
)
-
self
.
pickerView
.
selectedRow
(
inComponent
:
0
),
self
.
pickerView
.
selectedRow
(
inComponent
:
1
)
+
1
)
case
.
yyyy
:
date
=
String
(
format
:
"%02ld"
,
(
self
.
currentDateCom
.
year
!
)
-
self
.
pickerView
.
selectedRow
(
inComponent
:
0
))
}
if
self
.
backDate
!=
nil
{
self
.
backDate
!
(
date
)
}
}
}
extension
YHDatePickView
:
UIGestureRecognizerDelegate
{
func
gestureRecognizer
(
_
gestureRecognizer
:
UIGestureRecognizer
,
shouldReceive
touch
:
UITouch
)
->
Bool
{
if
touch
.
view
==
self
{
return
true
}
return
false
}
}
extension
YHDatePickView
:
UIPickerViewDelegate
,
UIPickerViewDataSource
{
func
numberOfComponents
(
in
pickerView
:
UIPickerView
)
->
Int
{
guard
let
type
=
type
else
{
return
3
}
switch
type
{
case
.
yyyymmdd
:
return
3
case
.
yyyymm
:
return
2
case
.
yyyy
:
return
1
}
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
numberOfRowsInComponent
component
:
Int
)
->
Int
{
if
component
==
0
{
return
100
}
else
if
component
==
1
{
return
12
}
else
{
let
year
:
Int
=
pickerView
.
selectedRow
(
inComponent
:
0
)
+
currentDateCom
.
year
!
let
month
:
Int
=
pickerView
.
selectedRow
(
inComponent
:
1
)
+
1
let
days
:
Int
=
howManyDays
(
inThisYear
:
year
,
withMonth
:
month
)
return
days
}
}
private
func
howManyDays
(
inThisYear
year
:
Int
,
withMonth
month
:
Int
)
->
Int
{
if
(
month
==
1
)
||
(
month
==
3
)
||
(
month
==
5
)
||
(
month
==
7
)
||
(
month
==
8
)
||
(
month
==
10
)
||
(
month
==
12
)
{
return
31
}
if
(
month
==
4
)
||
(
month
==
6
)
||
(
month
==
9
)
||
(
month
==
11
)
{
return
30
}
if
(
year
%
4
==
1
)
||
(
year
%
4
==
2
)
||
(
year
%
4
==
3
)
{
return
28
}
if
year
%
400
==
0
{
return
29
}
if
year
%
100
==
0
{
return
28
}
return
29
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
widthForComponent
component
:
Int
)
->
CGFloat
{
guard
let
type
=
type
else
{
return
KScreenWidth
/
3
}
switch
type
{
case
.
yyyymmdd
:
return
KScreenWidth
/
3
case
.
yyyymm
:
return
KScreenWidth
/
2
case
.
yyyy
:
return
KScreenWidth
}
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
rowHeightForComponent
component
:
Int
)
->
CGFloat
{
return
44
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
titleForRow
row
:
Int
,
forComponent
component
:
Int
)
->
String
?
{
if
component
==
0
{
return
"
\(
(
currentDateCom
.
year
!
)
-
row
)
"
}
else
if
component
==
1
{
return
"
\(
row
+
1
)
"
}
else
{
return
"
\(
row
+
1
)
"
}
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
didSelectRow
row
:
Int
,
inComponent
component
:
Int
)
{
if
component
==
1
,
self
.
type
==
.
yyyymmdd
{
pickerView
.
reloadComponent
(
2
)
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/ServiceProcess(流程)/MainApplicantInformation/V/YHImagePickerView.swift
0 → 100644
View file @
3458b157
//
// YHImagePickerView.swift
// galaxy
//
// Created by EDY on 2024/1/30.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHImagePickerView
:
UIView
{
var
centerView
:
UIView
!
var
titleLabel
:
UILabel
!
var
closeButton
:
UIButton
!
var
lineView
:
UIView
!
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
backgroundColor
=
UIColor
(
white
:
0.5
,
alpha
:
0.1
)
let
tap
=
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
handleTap
)
)
tap
.
delegate
=
self
addGestureRecognizer
(
tap
)
setView
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setView
()
{
backgroundColor
=
UIColor
(
hex
:
0x0000
,
alpha
:
0.5
)
centerView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
.
white
view
.
layer
.
cornerRadius
=
16
return
view
}()
addSubview
(
centerView
)
centerView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
bottom
.
equalToSuperview
()
make
.
height
.
equalTo
(
244
)
}
titleLabel
=
{
let
label
=
UILabel
()
label
.
text
=
"选择出生日期"
label
.
font
=
kFont
(
size
:
17
)
label
.
textColor
=
UIColor
(
hex
:
0x222222
)
label
.
textAlignment
=
.
left
return
label
}()
centerView
.
addSubview
(
titleLabel
)
titleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
16
)
make
.
left
.
height
.
equalTo
(
21
)
make
.
right
.
equalTo
(
-
21
)
}
closeButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
setBackgroundImage
(
UIImage
(
named
:
"service_card_close"
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
dismiss
)
,
for
:
.
touchUpInside
)
return
button
}()
centerView
.
addSubview
(
closeButton
)
closeButton
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalTo
(
-
21
)
make
.
width
.
height
.
equalTo
(
24
)
make
.
top
.
equalTo
(
16
)
}
lineView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
hex
:
0xf0f0f0
)
return
view
}()
centerView
.
addSubview
(
lineView
)
lineView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
18
)
make
.
top
.
equalTo
(
52
)
make
.
height
.
equalTo
(
1
)
make
.
right
.
equalTo
(
-
18
)
}
}
@objc
private
func
handleTap
(
_
sender
:
AnyObject
?)
{
print
(
"处理点击手势"
)
dismiss
()
}
@objc
func
dismiss
()
{
removeFromSuperview
()
}
}
extension
YHImagePickerView
:
UIGestureRecognizerDelegate
{
func
gestureRecognizer
(
_
gestureRecognizer
:
UIGestureRecognizer
,
shouldReceive
touch
:
UITouch
)
->
Bool
{
if
touch
.
view
==
self
{
return
true
}
return
false
}
}
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