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
e6ef2048
Commit
e6ef2048
authored
Oct 10, 2024
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加续签在港缴费指引
parent
b97c8321
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
897 additions
and
207 deletions
+897
-207
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+16
-0
YHHKVisaRenewalPaymentVC.swift
...saRenewalPayment(续签在港缴费)/C/YHHKVisaRenewalPaymentVC.swift
+23
-0
YHVisaRenewalGuideVC.swift
...ngVisaRenewalPayment(续签在港缴费)/C/YHVisaRenewalGuideVC.swift
+141
-6
YHBottomPresentationController.swift
...walPayment(续签在港缴费)/V/YHBottomPresentationController.swift
+128
-157
YHHKVisaRenewalPaymentStepView.swift
...walPayment(续签在港缴费)/V/YHHKVisaRenewalPaymentStepView.swift
+5
-4
YHVisaRenewalGuideHeaderCell.swift
...newalPayment(续签在港缴费)/V/YHVisaRenewalGuideHeaderCell.swift
+181
-40
YHVisaRenewalGuideIndentCell.swift
...newalPayment(续签在港缴费)/V/YHVisaRenewalGuideIndentCell.swift
+90
-0
YHVisaRenewalGuideParagraphCell.swift
...alPayment(续签在港缴费)/V/YHVisaRenewalGuideParagraphCell.swift
+70
-0
YHVisaRenewalGuideRemarkCell.swift
...newalPayment(续签在港缴费)/V/YHVisaRenewalGuideRemarkCell.swift
+55
-0
YHVisaRenewalGuideTipsCell.swift
...RenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideTipsCell.swift
+94
-0
Contents.json
...Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/Contents.json
+6
-0
Contents.json
...ter/续签/续签在港缴费/resign_visa_guide_bg.imageset/Contents.json
+22
-0
resign_visa_guide_bg@2x.png
...resign_visa_guide_bg.imageset/resign_visa_guide_bg@2x.png
+0
-0
resign_visa_guide_bg@3x.png
...resign_visa_guide_bg.imageset/resign_visa_guide_bg@3x.png
+0
-0
Contents.json
...r/续签/续签在港缴费/resign_visa_guide_tips.imageset/Contents.json
+22
-0
resign_visa_guide_tips@2x.png
...gn_visa_guide_tips.imageset/resign_visa_guide_tips@2x.png
+0
-0
resign_visa_guide_tips@3x.png
...gn_visa_guide_tips.imageset/resign_visa_guide_tips@3x.png
+0
-0
Contents.json
.../续签/续签在港缴费/resign_visa_guide_title.imageset/Contents.json
+22
-0
resign_visa_guide_title@2x.png
..._visa_guide_title.imageset/resign_visa_guide_title@2x.png
+0
-0
resign_visa_guide_title@3x.png
..._visa_guide_title.imageset/resign_visa_guide_title@3x.png
+0
-0
Contents.json
...r/续签/续签在港缴费/resign_visa_guide_warn.imageset/Contents.json
+22
-0
resign_visa_guide_warn@2x.png
...gn_visa_guide_warn.imageset/resign_visa_guide_warn@2x.png
+0
-0
resign_visa_guide_warn@3x.png
...gn_visa_guide_warn.imageset/resign_visa_guide_warn@3x.png
+0
-0
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
e6ef2048
...
...
@@ -223,6 +223,10 @@
044F39322CB64CC0007CA277
/* YHBottomPresentationController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F39312CB64CC0007CA277
/* YHBottomPresentationController.swift */
;
};
044F39342CB6507D007CA277
/* YHVisaRenewalGuideVC.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F39332CB6507D007CA277
/* YHVisaRenewalGuideVC.swift */
;
};
044F39362CB6574D007CA277
/* YHVisaRenewalGuideHeaderCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F39352CB6574D007CA277
/* YHVisaRenewalGuideHeaderCell.swift */
;
};
044F39382CB77359007CA277
/* YHVisaRenewalGuideParagraphCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F39372CB77359007CA277
/* YHVisaRenewalGuideParagraphCell.swift */
;
};
044F393A2CB7772D007CA277
/* YHVisaRenewalGuideRemarkCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F39392CB7772D007CA277
/* YHVisaRenewalGuideRemarkCell.swift */
;
};
044F393C2CB777D3007CA277
/* YHVisaRenewalGuideIndentCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F393B2CB777D3007CA277
/* YHVisaRenewalGuideIndentCell.swift */
;
};
044F393E2CB7827B007CA277
/* YHVisaRenewalGuideTipsCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
044F393D2CB7827B007CA277
/* YHVisaRenewalGuideTipsCell.swift */
;
};
04506F552C6F57E600738EA1
/* YHFamilyMemberInfoCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04506F542C6F57E600738EA1
/* YHFamilyMemberInfoCell.swift */
;
};
045A08C02C37ABF500BCBABA
/* YHSegmentView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
045A08BF2C37ABF500BCBABA
/* YHSegmentView.swift */
;
};
045A08C22C37EB8B00BCBABA
/* YHMyFileListNoneCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
045A08C12C37EB8B00BCBABA
/* YHMyFileListNoneCell.swift */
;
};
...
...
@@ -1094,6 +1098,10 @@
044F39312CB64CC0007CA277
/* YHBottomPresentationController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHBottomPresentationController.swift
;
sourceTree
=
"<group>"
;
};
044F39332CB6507D007CA277
/* YHVisaRenewalGuideVC.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideVC.swift
;
sourceTree
=
"<group>"
;
};
044F39352CB6574D007CA277
/* YHVisaRenewalGuideHeaderCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideHeaderCell.swift
;
sourceTree
=
"<group>"
;
};
044F39372CB77359007CA277
/* YHVisaRenewalGuideParagraphCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideParagraphCell.swift
;
sourceTree
=
"<group>"
;
};
044F39392CB7772D007CA277
/* YHVisaRenewalGuideRemarkCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideRemarkCell.swift
;
sourceTree
=
"<group>"
;
};
044F393B2CB777D3007CA277
/* YHVisaRenewalGuideIndentCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideIndentCell.swift
;
sourceTree
=
"<group>"
;
};
044F393D2CB7827B007CA277
/* YHVisaRenewalGuideTipsCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHVisaRenewalGuideTipsCell.swift
;
sourceTree
=
"<group>"
;
};
04506F542C6F57E600738EA1
/* YHFamilyMemberInfoCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHFamilyMemberInfoCell.swift
;
sourceTree
=
"<group>"
;
};
045A08BF2C37ABF500BCBABA
/* YHSegmentView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHSegmentView.swift
;
sourceTree
=
"<group>"
;
};
045A08C12C37EB8B00BCBABA
/* YHMyFileListNoneCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMyFileListNoneCell.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -2456,6 +2464,10 @@
044F39312CB64CC0007CA277
/* YHBottomPresentationController.swift */
,
044F392F2CB55D5E007CA277
/* YHDashLineView.swift */
,
044F39352CB6574D007CA277
/* YHVisaRenewalGuideHeaderCell.swift */
,
044F39372CB77359007CA277
/* YHVisaRenewalGuideParagraphCell.swift */
,
044F39392CB7772D007CA277
/* YHVisaRenewalGuideRemarkCell.swift */
,
044F393B2CB777D3007CA277
/* YHVisaRenewalGuideIndentCell.swift */
,
044F393D2CB7827B007CA277
/* YHVisaRenewalGuideTipsCell.swift */
,
);
path
=
V
;
sourceTree
=
"<group>"
;
...
...
@@ -5125,6 +5137,7 @@
04EC2F812C22888E002907D7
/* YHFriendRequestView.swift in Sources */
,
044EE24C2C94396E00A2FE3A
/* YHResignCertificatePassportTableViewCell.swift in Sources */
,
04F2435B2C9D140C00DF2C74
/* YHHKRecordsTitleCell.swift in Sources */
,
044F393A2CB7772D007CA277
/* YHVisaRenewalGuideRemarkCell.swift in Sources */
,
041892242C91BCF100B9FB94
/* YHResignRoundCellType.swift in Sources */
,
0430E6722C749E74000511E2
/* YHAdopterBirthViewController.swift in Sources */
,
048058392C7F289700502CAA
/* YHTravelCertificateItemView.swift in Sources */
,
...
...
@@ -5375,6 +5388,7 @@
04256E1D2C75C74200A37BA4
/* YHAppointHKResultModel.swift in Sources */
,
04CE1ADB2C2AD91F001CB80A
/* YHActivityTitleItemView.swift in Sources */
,
A5FD63BF2B6250BC00D1D9DA
/* YHInformationPerfectCell.swift in Sources */
,
044F393E2CB7827B007CA277
/* YHVisaRenewalGuideTipsCell.swift in Sources */
,
045EEE942B9F171A0022A143
/* YHPreviewInfoQuestionAndAnswerItemView.swift in Sources */
,
04F5F86A2C1A95BB004A463C
/* YHOtherServiceViewController.swift in Sources */
,
0430E6762C74A4BE000511E2
/* YHAdopterMarryViewController.swift in Sources */
,
...
...
@@ -5522,6 +5536,7 @@
0430E6662C7487B8000511E2
/* YHAdopterTravelItemTableViewCell.swift in Sources */
,
045EEEE22B9F171A0022A143
/* YHMySignatureDetailViewModel.swift in Sources */
,
045EEE7D2B9F171A0022A143
/* YHWorkExpDataModel.swift in Sources */
,
044F39382CB77359007CA277
/* YHVisaRenewalGuideParagraphCell.swift in Sources */
,
0485DFDA2C660EFA00B50293
/* YHPrincipleRequestModel.swift in Sources */
,
A5CA3F522C744A5000EB22F5
/* YHUploadCertificateTitleCell.swift in Sources */
,
045EEE832B9F171A0022A143
/* YHMainInfoPreviewModel.swift in Sources */
,
...
...
@@ -5743,6 +5758,7 @@
04EA230A2BB5172F009DA928
/* YHDocumentPromptTableViewCell.swift in Sources */
,
A5EB6C6F2C69FB9A0081FB6C
/* YHOfficalLetterListModel.swift in Sources */
,
045EEF092B9F171A0022A143
/* YHBasicInfoFillModel.swift in Sources */
,
044F393C2CB777D3007CA277
/* YHVisaRenewalGuideIndentCell.swift in Sources */
,
044EE2422C92EF0C00A2FE3A
/* YHResignCertificateDetailEVisaViewController.swift in Sources */
,
A5ACE9352B4564F7002C94D2
/* YHNetRequest.swift in Sources */
,
04F243612C9D488200DF2C74
/* YHHKRecordsPersonnelSelectCell.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/C/YHHKVisaRenewalPaymentVC.swift
View file @
e6ef2048
...
...
@@ -28,6 +28,7 @@ class YHHKVisaRenewalPaymentVC: YHBaseViewController {
return
view
}()
private
var
didShowGuideVC
=
false
private
let
orderId
:
Int
init
(
orderId
:
Int
)
{
...
...
@@ -43,6 +44,17 @@ class YHHKVisaRenewalPaymentVC: YHBaseViewController {
super
.
viewDidLoad
()
setupUI
()
}
override
func
viewDidAppear
(
_
animated
:
Bool
)
{
super
.
viewDidAppear
(
animated
)
if
!
didShowGuideVC
{
didShowGuideVC
=
true
let
didShowGuide
=
YHVisaRenewalGuideVC
.
didShowGuide
if
!
didShowGuide
{
showGuideVC
()
}
}
}
}
...
...
@@ -69,6 +81,17 @@ extension YHHKVisaRenewalPaymentVC {
tableView
.
tableHeaderView
=
UIView
(
frame
:
CGRect
.
init
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
kMargin
))
tableView
.
tableFooterView
=
UIView
(
frame
:
CGRect
.
init
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
kMargin
))
}
private
func
showGuideVC
()
{
let
vc
=
YHVisaRenewalGuideVC
()
let
pc
=
YHBottomPresentationController
(
presentedViewController
:
vc
,
presenting
:
self
)
pc
.
customRadius
=
16.0
vc
.
transitioningDelegate
=
pc
vc
.
sureButtonEvent
=
{
[
weak
vc
]
in
vc
?
.
dismiss
(
animated
:
true
)
}
present
(
vc
,
animated
:
true
,
completion
:
nil
)
}
}
extension
YHHKVisaRenewalPaymentVC
:
UITableViewDelegate
,
UITableViewDataSource
{
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/C/YHVisaRenewalGuideVC.swift
View file @
e6ef2048
...
...
@@ -7,8 +7,22 @@
//
import
UIKit
import
AttributedString
class
YHVisaRenewalGuideVC
:
YHBaseViewController
{
static
private
let
showCardGuideKey
=
"VisaRenewalGuideVCDidShow"
static
var
didShowGuide
:
Bool
{
UserDefaults
.
standard
.
value
(
forKey
:
showCardGuideKey
)
as?
Bool
==
true
}
enum
TableRow
{
case
header
case
paragraph
(
_
title
:
String
,
_
detail
:
String
)
case
indent
(
_
title
:
String
,
_
detail
:
String
)
case
tips
(
_
title
:
String
,
_
detail
:
ASAttributedString
)
case
remark
(
_
detail
:
String
)
}
private
lazy
var
tableView
:
UITableView
=
{
let
view
=
UITableView
(
frame
:
.
zero
,
style
:
.
plain
)
...
...
@@ -19,7 +33,11 @@ class YHVisaRenewalGuideVC: YHBaseViewController {
view
.
dataSource
=
self
view
.
delegate
=
self
view
.
showsVerticalScrollIndicator
=
false
view
.
register
(
YHHKRecordsHeaderCell
.
self
,
forCellReuseIdentifier
:
YHHKRecordsHeaderCell
.
cellReuseIdentifier
)
view
.
register
(
YHVisaRenewalGuideHeaderCell
.
self
,
forCellReuseIdentifier
:
YHVisaRenewalGuideHeaderCell
.
cellReuseIdentifier
)
view
.
register
(
YHVisaRenewalGuideParagraphCell
.
self
,
forCellReuseIdentifier
:
YHVisaRenewalGuideParagraphCell
.
cellReuseIdentifier
)
view
.
register
(
YHVisaRenewalGuideRemarkCell
.
self
,
forCellReuseIdentifier
:
YHVisaRenewalGuideRemarkCell
.
cellReuseIdentifier
)
view
.
register
(
YHVisaRenewalGuideIndentCell
.
self
,
forCellReuseIdentifier
:
YHVisaRenewalGuideIndentCell
.
cellReuseIdentifier
)
view
.
register
(
YHVisaRenewalGuideTipsCell
.
self
,
forCellReuseIdentifier
:
YHVisaRenewalGuideTipsCell
.
cellReuseIdentifier
)
return
view
}()
...
...
@@ -32,10 +50,13 @@ class YHVisaRenewalGuideVC: YHBaseViewController {
button
.
setTitle
(
"我已知悉,确认"
,
for
:
.
highlighted
)
button
.
setTitleColor
(
UIColor
(
hex
:
0xffffff
),
for
:
.
normal
)
button
.
setTitleColor
(
UIColor
(
hex
:
0xffffff
),
for
:
.
highlighted
)
button
.
setTitleColor
(
UIColor
(
hex
:
0xffffff
),
for
:
.
disabled
)
button
.
addTarget
(
self
,
action
:
#selector(
clickSureButton
)
,
for
:
.
touchUpInside
)
button
.
layer
.
cornerRadius
=
kCornerRadius3
button
.
clipsToBounds
=
true
button
.
backgroundColor
=
.
brandMainColor
let
isEnable
=
YHVisaRenewalGuideVC
.
didShowGuide
button
.
backgroundColor
=
isEnable
?
.
brandMainColor
:
UIColor
(
hex
:
0xB7C0CC
,
alpha
:
1.0
)
button
.
isEnabled
=
isEnable
return
button
}()
...
...
@@ -45,9 +66,33 @@ class YHVisaRenewalGuideVC: YHBaseViewController {
return
view
}()
var
sureButtonEvent
:
(()
->
Void
)?
private
lazy
var
datas
:
[
TableRow
]
=
[]
private
var
isStartTimer
:
Bool
=
false
private
let
maxCount
=
5
private
var
timer
:
DispatchSourceTimer
?
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
setupUI
()
setupDatas
()
}
override
func
viewDidAppear
(
_
animated
:
Bool
)
{
super
.
viewDidAppear
(
animated
)
if
!
isStartTimer
{
isStartTimer
=
true
let
didShowGuide
=
YHVisaRenewalGuideVC
.
didShowGuide
if
!
didShowGuide
{
setupTimer
()
}
}
}
deinit
{
cancelTimer
()
}
}
...
...
@@ -55,7 +100,7 @@ class YHVisaRenewalGuideVC: YHBaseViewController {
extension
YHVisaRenewalGuideVC
{
@objc
private
func
clickSureButton
()
{
//
sureButtonEvent
?()
}
private
func
setupUI
()
{
...
...
@@ -85,21 +130,111 @@ extension YHVisaRenewalGuideVC {
make
.
top
.
equalToSuperview
()
make
.
bottom
.
equalTo
(
bottomView
.
snp
.
top
)
}
tableView
.
tableFooterView
=
UIView
(
frame
:
CGRect
.
init
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
kMargin
))
tableView
.
tableFooterView
=
UIView
(
frame
:
CGRect
.
init
(
x
:
0
,
y
:
0
,
width
:
KScreenWidth
,
height
:
82
))
preferredContentSize
=
CGSize
(
width
:
KScreenWidth
,
height
:
KScreenHeight
-
k_Height_NavigationtBarAndStatuBar
)
}
private
func
setupDatas
()
{
datas
.
append
(
.
header
)
datas
.
append
(
.
paragraph
(
"二、原签证未过期但已离境,需赴港缴费领取新签证"
,
"携带港澳通行证逗留D签注(如是护照申请则为护照)、香港身份证;香港关请务必走香港居民通道"
))
datas
.
append
(
.
indent
(
"内地关"
,
"使用港澳通行证逗留D签注"
))
datas
.
append
(
.
indent
(
"香港关"
,
"已有香港身份证则使用香港身份证走香港居民通道;未满11岁无香港身份证,则使用对应旅行证件和电子签证走香港居民人工通道"
))
datas
.
append
(
.
paragraph
(
"三、原签证已过期且已离境,需赴港缴费领取新签证"
,
"携带港澳通行证旅游签注(如护照申请,则同时携带护照)、香港身份证;香港关也走访客通道"
))
datas
.
append
(
.
indent
(
"内地关"
,
"使用港澳通行证旅游签注"
))
datas
.
append
(
.
indent
(
"香港关"
,
"使用港澳通行证旅游签注(如护照申请则使用护照)走访客通道"
))
datas
.
append
(
.
remark
(
"备注:如用中国护照申请,从内地赴港,在非需前往其他国家的情况下可能无法直接持护照过关,需提前办理港澳通行证旅游签注备用;建议联合其他国行程,香港作为中转,即可护照顺利入境"
))
let
firstAtt
:
ASAttributedString
=
.
init
(
string
:
"1、信用卡(只接受VISA、万事达卡、银联卡及JCB),缴费灵,「转数快」或内地电子钱包(只接受支付宝、微信支付及云闪付App)缴付。付款成功后,申请人随即可自行下载或打印「电子签证」
\n\n
2、缴费过程中或需填写获批者的出生日期与旅行证件号码,请提前准备
\n\n
3、手机端电脑端都可缴费,建议使用电脑端(每位获批者都需单独缴费一次)"
,
.
font
(
UIFont
.
PFSC_R
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
mainTextColor70
),
.
paragraph
(
.
lineHeightMultiple
(
1.07
)))
datas
.
append
(
.
tips
(
"缴费注意事项:"
,
firstAtt
))
let
secLine1a
:
ASAttributedString
=
.
init
(
string
:
"1、涉及的申请人若已在港,并在赴港时使用正确证件,走正确通道才可以去缴费查看签证;未入境前一旦尝试缴费签证就会被锁;若刚入境香港,"
,
.
font
(
UIFont
.
PFSC_R
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
mainTextColor70
))
let
secLine1b
:
ASAttributedString
=
.
init
(
string
:
"至少2个小时后再进行缴费"
,
.
font
(
UIFont
.
PFSC_M
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
brandMainColor
))
let
secLine1c
:
ASAttributedString
=
.
init
(
string
:
",避免海关还未识别到入境记录,导致签证被锁
\n\n
"
,
.
font
(
UIFont
.
PFSC_R
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
mainTextColor70
))
let
secLine2a
:
ASAttributedString
=
.
init
(
string
:
"2、签证过期后,再入境香港缴费只能以访客身份入境,会有签证被锁的风险。"
,
.
font
(
UIFont
.
PFSC_R
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
mainTextColor70
))
let
secLine2b
:
ASAttributedString
=
.
init
(
string
:
"建议尽量在工作日到港缴费"
,
.
font
(
UIFont
.
PFSC_M
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
brandMainColor
))
let
secLine2c
:
ASAttributedString
=
.
init
(
string
:
",如遇签证被锁情况方便去入境处核实情况及申请重发,目前重发周期预计是3-6周,重发后需要再次来港缴费"
,
.
font
(
UIFont
.
PFSC_R
(
ofSize
:
13
)),
.
foreground
(
UIColor
.
mainTextColor70
))
let
secAtt
:
ASAttributedString
=
(
secLine1a
+
secLine1b
+
secLine1c
+
secLine2a
+
secLine2b
+
secLine2c
)
.
add
(
attributes
:
.
paragraph
(
.
lineHeightMultiple
(
1.07
)))
datas
.
append
(
.
tips
(
"风险提示:"
,
secAtt
))
tableView
.
reloadData
()
}
/// 设置定时器
private
func
setupTimer
()
{
var
countDown
=
maxCount
+
1
timer
=
DispatchSource
.
makeTimerSource
(
queue
:
.
main
)
timer
?
.
schedule
(
deadline
:
.
now
(),
repeating
:
.
seconds
(
1
))
timer
?
.
setEventHandler
(
handler
:
{
[
weak
self
]
in
guard
let
self
=
self
else
{
return
}
DispatchQueue
.
main
.
async
{
countDown
-=
1
if
countDown
==
0
{
self
.
cancelTimer
()
self
.
sureButton
.
isEnabled
=
true
self
.
sureButton
.
backgroundColor
=
.
brandMainColor
UserDefaults
.
standard
.
set
(
true
,
forKey
:
YHVisaRenewalGuideVC
.
showCardGuideKey
)
UserDefaults
.
standard
.
synchronize
()
return
}
self
.
sureButton
.
isEnabled
=
false
self
.
sureButton
.
setTitle
(
"请上滑看完指引后操作(
\(
countDown
)
s)"
,
for
:
.
disabled
)
self
.
sureButton
.
backgroundColor
=
UIColor
(
hex
:
0xB7C0CC
,
alpha
:
1.0
)
}
})
timer
?
.
resume
()
}
/// 取消定时器
private
func
cancelTimer
()
{
if
timer
!=
nil
{
timer
?
.
cancel
()
timer
=
nil
}
}
}
extension
YHVisaRenewalGuideVC
:
UITableViewDelegate
,
UITableViewDataSource
{
func
numberOfSections
(
in
tableView
:
UITableView
)
->
Int
{
return
0
return
datas
.
count
>
0
?
1
:
0
}
func
tableView
(
_
tableView
:
UITableView
,
numberOfRowsInSection
section
:
Int
)
->
Int
{
return
0
return
datas
.
count
}
func
tableView
(
_
tableView
:
UITableView
,
cellForRowAt
indexPath
:
IndexPath
)
->
UITableViewCell
{
guard
datas
.
count
>
indexPath
.
row
else
{
return
UITableViewCell
()
}
let
tableRow
=
datas
[
indexPath
.
row
]
switch
tableRow
{
case
.
header
:
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHVisaRenewalGuideHeaderCell
.
cellReuseIdentifier
)
as?
YHVisaRenewalGuideHeaderCell
{
return
cell
}
case
let
.
paragraph
(
title
,
detail
):
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHVisaRenewalGuideParagraphCell
.
cellReuseIdentifier
)
as?
YHVisaRenewalGuideParagraphCell
{
cell
.
setupCellInfo
(
title
:
title
,
detail
:
detail
)
return
cell
}
case
let
.
indent
(
title
,
detail
):
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHVisaRenewalGuideIndentCell
.
cellReuseIdentifier
)
as?
YHVisaRenewalGuideIndentCell
{
cell
.
setupCellInfo
(
title
:
title
,
detail
:
detail
)
return
cell
}
case
let
.
tips
(
title
,
detail
):
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHVisaRenewalGuideTipsCell
.
cellReuseIdentifier
)
as?
YHVisaRenewalGuideTipsCell
{
cell
.
setupCellInfo
(
title
:
title
,
detail
:
detail
)
return
cell
}
case
let
.
remark
(
detail
):
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHVisaRenewalGuideRemarkCell
.
cellReuseIdentifier
)
as?
YHVisaRenewalGuideRemarkCell
{
cell
.
setupCellInfo
(
detail
:
detail
)
return
cell
}
}
return
UITableViewCell
()
}
...
...
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHBottomPresentationController.swift
View file @
e6ef2048
...
...
@@ -9,233 +9,204 @@
import
UIKit
class
YHBottomPresentationController
:
UIPresentationController
{
/*
let vc = UIViewController()
let pc = YHBottomPresentationController(presentedViewController: vc, presenting: self)
pc.customRadius = 12.0
vc.transitioningDelegate = pc
vc.closeButtonClickClosure = { [weak vc] in
vc?.dismiss(animated: true)
}
pc.dimmingViewTapAction = {
vc.dismiss(animated: true, completion: nil)
}
present(vc, animated: true, completion: nil)
*/
// MARK: - Properties
@IBInspectable
public
var
customRadius
:
CGFloat
=
8.0
@IBInspectable
public
var
blurEffectAlpha
:
CGFloat
=
0.5
public
var
dimmingViewTapAction
:
(()
->
Void
)?
private
var
dimmingView
:
UIView
?
private
var
presentationWrappingView
:
UIView
?
private
enum
TransitionState
{
case
presenting
case
dismissing
}
private
struct
Constants
{
static
let
animationDuration
:
TimeInterval
=
0.35
static
let
shadowOpacity
:
Float
=
0.44
static
let
shadowRadius
:
CGFloat
=
13.0
static
let
shadowOffset
:
CGSize
=
CGSize
(
width
:
0
,
height
:
-
6
)
}
// MARK: - Lazy Properties
private
lazy
var
dimmingView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
.
black
.
withAlphaComponent
(
blurEffectAlpha
)
view
.
isOpaque
=
false
view
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
view
.
addGestureRecognizer
(
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
dimmingViewTapped(_:)
)
))
return
view
}()
public
var
customRadius
:
CGFloat
=
8.0
var
blurEffectAlpha
:
CGFloat
=
0.5
var
dimmingViewTapAction
:
(()
->
Void
)?
private
lazy
var
visualEffectView
:
UIVisualEffectView
=
{
let
effect
=
UIBlurEffect
(
style
:
.
dark
)
let
view
=
UIVisualEffectView
(
effect
:
effect
)
view
.
alpha
=
blurEffectAlpha
view
.
alpha
=
0.5
return
view
}()
// MARK: - Initialization
override
init
(
presentedViewController
:
UIViewController
,
presenting
presentingViewController
:
UIViewController
?)
{
super
.
init
(
presentedViewController
:
presentedViewController
,
presenting
:
presentingViewController
)
presentedViewController
.
modalPresentationStyle
=
.
custom
}
// MARK: - Overrides
override
var
presentedView
:
UIView
?
{
return
presentationWrappingView
}
override
func
presentationTransitionWillBegin
()
{
guard
let
containerView
=
containerView
else
{
return
}
let
presentationWrapperView
=
createPresentationWrapperView
()
let
presentationWrapperView
=
UIView
(
frame
:
frameOfPresentedViewInContainerView
)
presentationWrapperView
.
layer
.
shadowOpacity
=
0.44
presentationWrapperView
.
layer
.
shadowRadius
=
13.0
presentationWrapperView
.
layer
.
shadowOffset
=
CGSize
(
width
:
0
,
height
:
-
6
)
presentationWrappingView
=
presentationWrapperView
setupDimmingView
(
in
:
containerView
)
let
transitionCoordinator
=
presentingViewController
.
transitionCoordinator
dimmingView
.
alpha
=
0.0
transitionCoordinator
?
.
animate
(
alongsideTransition
:
{
[
weak
self
]
_
in
self
?
.
dimmingView
.
alpha
=
1
},
completion
:
nil
)
let
presentationRoundedCornerView
=
UIView
(
frame
:
presentationWrapperView
.
bounds
.
inset
(
by
:
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
-
customRadius
,
right
:
0
)))
presentationRoundedCornerView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
presentationRoundedCornerView
.
layer
.
cornerRadius
=
customRadius
presentationRoundedCornerView
.
layer
.
masksToBounds
=
true
let
presentedViewControllerWrapperView
=
UIView
(
frame
:
presentationRoundedCornerView
.
bounds
.
inset
(
by
:
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
customRadius
,
right
:
0
)))
presentedViewControllerWrapperView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
let
presentedViewControllerView
=
super
.
presentedView
if
let
presentedViewControllerView
=
presentedViewControllerView
{
presentedViewControllerView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
presentedViewControllerView
.
frame
=
presentedViewControllerWrapperView
.
bounds
presentedViewControllerWrapperView
.
addSubview
(
presentedViewControllerView
)
}
presentationRoundedCornerView
.
addSubview
(
presentedViewControllerWrapperView
)
presentationWrapperView
.
addSubview
(
presentationRoundedCornerView
)
if
let
containerView
=
containerView
{
let
dimmingView
=
UIView
(
frame
:
containerView
.
bounds
)
visualEffectView
.
frame
=
dimmingView
.
bounds
visualEffectView
.
alpha
=
blurEffectAlpha
dimmingView
.
addSubview
(
visualEffectView
)
visualEffectView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
dimmingView
.
backgroundColor
=
UIColor
.
black
.
withAlphaComponent
(
blurEffectAlpha
)
dimmingView
.
isOpaque
=
false
dimmingView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
dimmingView
.
addGestureRecognizer
(
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
dimmingViewTapped(_:)
)
))
self
.
dimmingView
=
dimmingView
containerView
.
addSubview
(
dimmingView
)
let
transitionCoordinator
=
presentingViewController
.
transitionCoordinator
dimmingView
.
alpha
=
0.0
transitionCoordinator
?
.
animate
(
alongsideTransition
:
{
[
weak
self
]
_
in
self
?
.
dimmingView
?
.
alpha
=
1
},
completion
:
nil
)
}
}
override
func
presentationTransitionDidEnd
(
_
completed
:
Bool
)
{
if
!
completed
{
presentationWrappingView
=
nil
dimmingView
.
removeFromSuperview
()
dimmingView
=
nil
}
}
override
func
dismissalTransitionWillBegin
()
{
let
transitionCoordinator
=
presentingViewController
.
transitionCoordinator
transitionCoordinator
?
.
animate
(
alongsideTransition
:
{
[
weak
self
]
_
in
self
?
.
dimmingView
.
alpha
=
0
self
?
.
dimmingView
?
.
alpha
=
0
},
completion
:
nil
)
}
override
func
dismissalTransitionDidEnd
(
_
completed
:
Bool
)
{
if
completed
{
presentationWrappingView
=
nil
dimmingView
.
removeFromSuperview
()
dimmingView
=
nil
}
}
// MARK: Layout
override
func
preferredContentSizeDidChange
(
forChildContentContainer
container
:
UIContentContainer
)
{
super
.
preferredContentSizeDidChange
(
forChildContentContainer
:
container
)
if
container
===
presentedViewController
{
containerView
?
.
setNeedsLayout
()
}
}
override
func
size
(
forChildContentContainer
container
:
UIContentContainer
,
withParentContainerSize
parentSize
:
CGSize
)
->
CGSize
{
if
container
===
presentedViewController
{
if
container
===
presentedViewController
,
(
container
as?
UIViewController
)
!=
nil
{
return
container
.
preferredContentSize
}
else
{
return
super
.
size
(
forChildContentContainer
:
container
,
withParentContainerSize
:
parentSize
)
}
return
super
.
size
(
forChildContentContainer
:
container
,
withParentContainerSize
:
parentSize
)
}
override
var
frameOfPresentedViewInContainerView
:
CGRect
{
guard
let
containerView
=
containerView
else
{
return
.
zero
}
guard
let
containerView
=
containerView
else
{
return
CGRect
.
zero
}
let
containerViewBounds
=
containerView
.
bounds
let
presentedViewContentSize
=
size
(
forChildContentContainer
:
presentedViewController
,
withParentContainerSize
:
containerViewBounds
.
size
)
let
presentedViewContentSize
=
size
(
forChildContentContainer
:
self
.
presentedViewController
,
withParentContainerSize
:
containerViewBounds
.
size
)
var
presentedViewControllerFrame
=
containerViewBounds
presentedViewControllerFrame
.
size
.
height
=
presentedViewContentSize
.
height
presentedViewControllerFrame
.
origin
.
y
=
containerViewBounds
.
maxY
-
presentedViewContentSize
.
height
return
presentedViewControllerFrame
}
override
func
containerViewWillLayoutSubviews
()
{
super
.
containerViewWillLayoutSubviews
()
dimmingView
.
frame
=
containerView
?
.
bounds
??
.
zero
dimmingView
?
.
frame
=
containerView
?
.
bounds
??
CGRect
.
zero
presentationWrappingView
?
.
frame
=
frameOfPresentedViewInContainerView
}
// MARK: - Private Methods
private
func
createPresentationWrapperView
()
->
UIView
{
let
wrapperView
=
UIView
(
frame
:
frameOfPresentedViewInContainerView
)
wrapperView
.
layer
.
shadowOpacity
=
Constants
.
shadowOpacity
wrapperView
.
layer
.
shadowRadius
=
Constants
.
shadowRadius
wrapperView
.
layer
.
shadowOffset
=
Constants
.
shadowOffset
let
roundedCornerView
=
createRoundedCornerView
(
in
:
wrapperView
)
let
presentedControllerWrapperView
=
createPresentedControllerWrapperView
(
in
:
roundedCornerView
)
if
let
presentedView
=
super
.
presentedView
{
presentedView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
presentedView
.
frame
=
presentedControllerWrapperView
.
bounds
presentedControllerWrapperView
.
addSubview
(
presentedView
)
}
return
wrapperView
}
private
func
createRoundedCornerView
(
in
wrapperView
:
UIView
)
->
UIView
{
let
roundedCornerView
=
UIView
(
frame
:
wrapperView
.
bounds
.
inset
(
by
:
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
-
customRadius
,
right
:
0
)))
roundedCornerView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
roundedCornerView
.
layer
.
cornerRadius
=
customRadius
roundedCornerView
.
layer
.
masksToBounds
=
true
wrapperView
.
addSubview
(
roundedCornerView
)
return
roundedCornerView
}
private
func
createPresentedControllerWrapperView
(
in
roundedCornerView
:
UIView
)
->
UIView
{
let
wrapperView
=
UIView
(
frame
:
roundedCornerView
.
bounds
.
inset
(
by
:
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
customRadius
,
right
:
0
)))
wrapperView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
roundedCornerView
.
addSubview
(
wrapperView
)
return
wrapperView
}
private
func
setupDimmingView
(
in
containerView
:
UIView
)
{
dimmingView
.
frame
=
containerView
.
bounds
visualEffectView
.
frame
=
dimmingView
.
bounds
dimmingView
.
addSubview
(
visualEffectView
)
visualEffectView
.
autoresizingMask
=
[
.
flexibleHeight
,
.
flexibleWidth
]
containerView
.
addSubview
(
dimmingView
)
}
// MARK: - Actions
@objc
private
func
dimmingViewTapped
(
_
:
UITapGestureRecognizer
)
{
// MARK: Tap Gesture Recognizer
@objc
func
dimmingViewTapped
(
_
:
UITapGestureRecognizer
)
{
dimmingViewTapAction
?()
}
}
// MARK: - UIViewControllerAnimatedTransitioning
extension
YHBottomPresentationController
:
UIViewControllerAnimatedTransitioning
{
func
transitionDuration
(
using
transitionContext
:
UIViewControllerContextTransitioning
?)
->
TimeInterval
{
return
transitionContext
?
.
isAnimated
==
true
?
Constants
.
animationDuration
:
0
return
(
transitionContext
?
.
isAnimated
??
false
)
?
0.35
:
0
}
func
animateTransition
(
using
transitionContext
:
UIViewControllerContextTransitioning
)
{
let
state
:
TransitionState
=
(
transitionContext
.
viewController
(
forKey
:
.
from
)
===
presentingViewController
)
?
.
presenting
:
.
dismissing
guard
let
view
=
state
==
.
presenting
?
transitionContext
.
view
(
forKey
:
.
to
)
:
transitionContext
.
view
(
forKey
:
.
from
)
else
{
return
}
let
initialFrame
=
view
.
frame
let
finalFrame
=
state
==
.
presenting
?
transitionContext
.
finalFrame
(
for
:
presentedViewController
)
:
initialFrame
.
offsetBy
(
dx
:
0
,
dy
:
initialFrame
.
height
)
view
.
frame
=
state
==
.
presenting
?
initialFrame
:
finalFrame
let
animator
=
UIViewPropertyAnimator
(
duration
:
Constants
.
animationDuration
,
curve
:
.
easeInOut
)
{
view
.
frame
=
state
==
.
presenting
?
finalFrame
:
initialFrame
let
fromViewController
=
transitionContext
.
viewController
(
forKey
:
.
from
)
let
toViewController
=
transitionContext
.
viewController
(
forKey
:
.
to
)
let
toView
=
transitionContext
.
view
(
forKey
:
.
to
)
let
fromView
=
transitionContext
.
view
(
forKey
:
.
from
)
let
containerView
=
transitionContext
.
containerView
let
isPresenting
=
(
fromViewController
===
presentingViewController
)
var
fromViewFinalFrame
=
CGRect
.
zero
var
toViewInitialFrame
=
CGRect
.
zero
var
toViewFinalFrame
=
CGRect
.
zero
if
let
fromViewController
=
fromViewController
{
_
=
transitionContext
.
initialFrame
(
for
:
fromViewController
)
fromViewFinalFrame
=
transitionContext
.
finalFrame
(
for
:
fromViewController
)
}
if
let
toViewController
=
toViewController
{
toViewInitialFrame
=
transitionContext
.
initialFrame
(
for
:
toViewController
)
toViewFinalFrame
=
transitionContext
.
finalFrame
(
for
:
toViewController
)
}
animator
.
addCompletion
{
_
in
transitionContext
.
completeTransition
(
!
transitionContext
.
transitionWasCancelled
)
if
let
toView
=
toView
{
containerView
.
addSubview
(
toView
)
}
if
isPresenting
{
toViewInitialFrame
.
origin
=
CGPoint
(
x
:
containerView
.
bounds
.
minX
,
y
:
containerView
.
bounds
.
maxY
)
toViewInitialFrame
.
size
=
toViewFinalFrame
.
size
if
let
toView
=
toView
{
toView
.
frame
=
toViewInitialFrame
}
}
else
{
if
let
fromView
=
fromView
{
fromViewFinalFrame
=
fromView
.
frame
.
offsetBy
(
dx
:
0
,
dy
:
fromView
.
frame
.
size
.
height
)
}
}
let
transitionDuration
=
self
.
transitionDuration
(
using
:
transitionContext
)
UIView
.
animate
(
withDuration
:
transitionDuration
)
{
if
isPresenting
{
if
let
toView
=
toView
{
toView
.
frame
=
toViewFinalFrame
}
}
else
{
if
let
fromView
=
fromView
{
fromView
.
frame
=
fromViewFinalFrame
}
}
}
completion
:
{
_
in
let
wasCancelled
=
transitionContext
.
transitionWasCancelled
transitionContext
.
completeTransition
(
!
wasCancelled
)
}
animator
.
startAnimation
()
}
}
// MARK: - UIViewControllerTransitioningDelegate
extension
YHBottomPresentationController
:
UIViewControllerTransitioningDelegate
{
func
presentationController
(
forPresented
presented
:
UIViewController
,
presenting
:
UIViewController
?,
source
:
UIViewController
)
->
UIPresentationController
?
{
assert
(
presentedViewController
===
presented
,
"You didn't initialize
\(
self
)
with the correct presentedViewController. Expected
\(
presented
)
, got
\(
presentedViewController
)
."
)
func
presentationController
(
forPresented
presented
:
UIViewController
,
presenting
_
:
UIViewController
?,
source
_
:
UIViewController
)
->
UIPresentationController
?
{
assert
(
presentedViewController
===
presented
,
"You didn't initialize
\(
self
)
with the correct presentedViewController.
Expected
\(
presented
)
, got
\(
presentedViewController
)
."
)
return
self
}
func
animationController
(
forPresented
presented
:
UIViewController
,
presenting
:
UIViewController
,
source
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
func
animationController
(
forPresented
_
:
UIViewController
,
presenting
_
:
UIViewController
,
source
_
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
return
self
}
func
animationController
(
forDismissed
dismissed
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
func
animationController
(
forDismissed
_
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
return
self
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHHKVisaRenewalPaymentStepView.swift
View file @
e6ef2048
...
...
@@ -144,10 +144,11 @@ extension YHHKVisaRenewalPaymentStepView {
private
func
getStepLabel
(
_
title
:
String
)
->
UILabel
{
let
label
=
UILabel
()
label
.
font
=
UIFont
(
name
:
"DIN Alternate Bold"
,
size
:
12
)
label
.
textColor
=
.
mainTextColor70
label
.
backgroundColor
=
UIColor
(
hex
:
0xf4f6fa
)
label
.
textColor
=
.
brandMainColor
label
.
layer
.
cornerRadius
=
stepLabelHeight
/
2.0
label
.
clipsToBounds
=
true
label
.
layer
.
borderWidth
=
1
label
.
layer
.
borderColor
=
UIColor
.
brandMainColor16
.
cgColor
label
.
text
=
title
label
.
textAlignment
=
.
center
return
label
...
...
@@ -156,13 +157,13 @@ extension YHHKVisaRenewalPaymentStepView {
private
func
getStepNameLabel
(
_
title
:
String
)
->
UILabel
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
12
)
label
.
textColor
=
.
mainTextColor
70
label
.
textColor
=
.
mainTextColor
label
.
text
=
title
return
label
}
private
func
getDashLineView
()
->
YHDashLineView
{
let
view
=
YHDashLineView
(
strokeColor
:
UIColor
(
hex
:
0x121A26
,
alpha
:
0.12
)
.
cgColor
,
lineWidth
:
1
,
lineDashPattern
:
[
2
,
2
])
let
view
=
YHDashLineView
(
strokeColor
:
UIColor
.
brandMainColor16
.
cgColor
,
lineWidth
:
1
,
lineDashPattern
:
[
2
,
2
])
return
view
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideHeaderCell.swift
View file @
e6ef2048
...
...
@@ -12,49 +12,109 @@ import AttributedString
class
YHVisaRenewalGuideHeaderCell
:
UITableViewCell
{
static
let
cellReuseIdentifier
=
"YHVisaRenewalGuideHeaderCell"
private
lazy
var
infoTitle
Label
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_M
(
ofSize
:
17
)
label
.
textColor
=
UIColor
(
hexString
:
"#222222
"
)
return
label
private
lazy
var
infoTitle
Icon
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
contentMode
=
.
scaleAspectFit
view
.
image
=
UIImage
(
named
:
"resign_visa_guide_title
"
)
return
view
}()
private
lazy
var
tipIcon
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
image
=
UIImage
(
named
:
"right_arrow_black_20"
)
view
.
image
=
UIImage
(
named
:
"resign_visa_guide_tips"
)
return
view
}()
private
lazy
var
bgIcon
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
image
=
UIImage
(
named
:
"resign_visa_guide_bg"
)
return
view
}()
private
lazy
var
tipTitleLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_M
(
ofSize
:
17
)
label
.
textColor
=
UIColor
(
hexString
:
"#222222"
)
label
.
font
=
.
PFSC_B
(
ofSize
:
14
)
label
.
textColor
=
.
mainTextColor
label
.
text
=
"香港入境处政策"
return
label
}()
private
lazy
var
firstDotView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
.
brandMainColor30
view
.
layer
.
cornerRadius
=
3
view
.
clipsToBounds
=
true
return
view
}()
private
lazy
var
secondDotView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
.
brandMainColor30
view
.
layer
.
cornerRadius
=
3
view
.
clipsToBounds
=
true
return
view
}()
private
lazy
var
firstTipDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
13
)
label
.
textColor
=
.
mainTextColor70
label
.
text
=
"获批后,3个月内完成缴费,否则身份会失效"
label
.
numberOfLines
=
0
return
label
}()
private
lazy
var
t
ipDetailLabel
:
UILabel
=
{
private
lazy
var
secondT
ipDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_M
(
ofSize
:
17
)
label
.
textColor
=
UIColor
(
hexString
:
"#222222"
)
label
.
font
=
.
PFSC_R
(
ofSize
:
13
)
label
.
textColor
=
.
mainTextColor70
label
.
text
=
"缴费领取电子签证时,涉及到的申请人应身在香港"
label
.
numberOfLines
=
0
return
label
}()
private
lazy
var
subContainerView
:
YHBaseDynamicCornerRadiusView
=
{
let
view
=
YHBaseDynamicCornerRadiusView
(
cornerRadius
:
8
,
corner
:
.
none
)
view
.
backgroundColor
=
.
white
let
view
=
YHBaseDynamicCornerRadiusView
(
cornerRadius
:
6
,
corner
:
.
allCorners
)
view
.
backgroundColor
=
UIColor
(
hexString
:
"#FFF5EB"
)
return
view
}()
private
lazy
var
war
r
nIcon
:
UIImageView
=
{
private
lazy
var
warnIcon
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
image
=
UIImage
(
named
:
"r
ight_arrow_black_20
"
)
view
.
image
=
UIImage
(
named
:
"r
esign_visa_guide_warn
"
)
return
view
}()
private
lazy
var
warrnDetailLabel
:
UILabel
=
{
private
lazy
var
warnDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
13
)
label
.
textColor
=
UIColor
(
hex
:
0xFF8000
)
label
.
text
=
"在港缴费领取电子签证时使用的入境证件,请务必和递交续签资料时入境香港使用的旅行证件保持一致"
label
.
numberOfLines
=
0
return
label
}()
private
lazy
var
paragraphTitleLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_M
(
ofSize
:
17
)
label
.
textColor
=
UIColor
(
hexString
:
"#222222"
)
label
.
font
=
.
PFSC_B
(
ofSize
:
16
)
label
.
textColor
=
.
mainTextColor
label
.
numberOfLines
=
0
label
.
text
=
"一、递交续签申请后,未离境一直在港"
return
label
}()
private
lazy
var
paragraphDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
14
)
label
.
textColor
=
.
mainTextColor70
label
.
numberOfLines
=
0
let
paragraphStyle
=
NSMutableParagraphStyle
()
paragraphStyle
.
lineHeightMultiple
=
1.07
let
attributedText
=
NSAttributedString
(
string
:
"一直未离港,获批后,可在港直接缴费并领取新电子签证"
,
attributes
:
[
NSAttributedString
.
Key
.
paragraphStyle
:
paragraphStyle
]
)
label
.
attributedText
=
attributedText
return
label
}()
...
...
@@ -66,34 +126,115 @@ class YHVisaRenewalGuideHeaderCell: UITableViewCell {
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setupCellInfo
(
title
:
String
?,
detail
:
String
?)
{
// infoTitleLabel.text = title
// infoDetailLabel.text = detail
}
func
setupCellASAttributedInfo
(
title
:
String
?,
detail
:
ASAttributedString
?,
detailColor
:
UIColor
=
.
mainTextColor50
)
{
// infoTitleLabel.text = title
// infoDetailLabel.textColor = detailColor
// infoDetailLabel.attributed.text = detail
}
}
extension
YHVisaRenewalGuideHeaderCell
{
private
func
setupUI
()
{
selectionStyle
=
.
none
backgroundColor
=
.
clear
contentView
.
addSubview
(
bgIcon
)
contentView
.
addSubview
(
infoTitleIcon
)
contentView
.
addSubview
(
tipIcon
)
contentView
.
addSubview
(
tipTitleLabel
)
contentView
.
addSubview
(
firstDotView
)
contentView
.
addSubview
(
secondDotView
)
contentView
.
addSubview
(
firstTipDetailLabel
)
contentView
.
addSubview
(
secondTipDetailLabel
)
contentView
.
addSubview
(
subContainerView
)
subContainerView
.
addSubview
(
warnIcon
)
subContainerView
.
addSubview
(
warnDetailLabel
)
contentView
.
addSubview
(
paragraphTitleLabel
)
contentView
.
addSubview
(
paragraphDetailLabel
)
bgIcon
.
setContentHuggingPriority
(
.
defaultLow
,
for
:
.
vertical
)
infoTitleIcon
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
tipTitleLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
firstTipDetailLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
secondTipDetailLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
subContainerView
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
warnDetailLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
paragraphTitleLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
paragraphDetailLabel
.
setContentHuggingPriority
(
.
required
,
for
:
.
vertical
)
bgIcon
.
snp
.
makeConstraints
{
make
in
make
.
edges
.
equalToSuperview
()
}
infoTitleIcon
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
25
)
make
.
left
.
equalToSuperview
()
.
offset
(
22
)
make
.
height
.
equalTo
(
25
)
make
.
width
.
equalTo
(
253
)
}
tipIcon
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
infoTitleIcon
.
snp
.
bottom
)
.
offset
(
34
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
make
.
height
.
equalTo
(
20
)
make
.
width
.
equalTo
(
20
)
}
tipTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
tipIcon
.
snp
.
right
)
.
offset
(
8
)
make
.
centerY
.
equalTo
(
tipIcon
)
}
firstDotView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
tipIcon
.
snp
.
bottom
)
.
offset
(
19
)
make
.
left
.
equalTo
(
tipIcon
)
make
.
height
.
equalTo
(
6
)
make
.
width
.
equalTo
(
6
)
}
firstTipDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
tipIcon
.
snp
.
bottom
)
.
offset
(
12
)
make
.
left
.
equalTo
(
firstDotView
.
snp
.
right
)
.
offset
(
6
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
}
secondDotView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
firstTipDetailLabel
.
snp
.
bottom
)
.
offset
(
19
)
make
.
left
.
equalTo
(
tipIcon
)
make
.
height
.
equalTo
(
6
)
make
.
width
.
equalTo
(
6
)
}
secondTipDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
firstTipDetailLabel
.
snp
.
bottom
)
.
offset
(
12
)
make
.
left
.
equalTo
(
secondDotView
.
snp
.
right
)
.
offset
(
6
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
}
subContainerView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
secondTipDetailLabel
.
snp
.
bottom
)
.
offset
(
20
)
make
.
left
.
equalTo
(
tipIcon
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
20
)
}
warnIcon
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
16
)
make
.
top
.
equalToSuperview
()
.
offset
(
19
)
make
.
width
.
height
.
equalTo
(
14
)
}
warnDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
warnIcon
.
snp
.
right
)
.
offset
(
8
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
16
)
make
.
top
.
equalToSuperview
()
.
offset
(
16
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
16
)
}
paragraphTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
subContainerView
.
snp
.
bottom
)
.
offset
(
20
)
make
.
left
.
equalTo
(
tipIcon
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
}
// subContainerView.snp.makeConstraints { make in
// make.edges.equalToSuperview()
// }
//
// bottomLineView.snp.makeConstraints { make in
// make.bottom.equalToSuperview()
// make.left.equalToSuperview().offset(18)
// make.right.equalToSuperview().offset(-18)
// make.height.equalTo(0.5)
// }
paragraphDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
paragraphTitleLabel
.
snp
.
bottom
)
.
offset
(
12
)
make
.
left
.
equalTo
(
tipIcon
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
make
.
bottom
.
equalToSuperview
()
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideIndentCell.swift
0 → 100644
View file @
e6ef2048
//
// YHVisaRenewalGuideIndentCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHVisaRenewalGuideIndentCell
:
UITableViewCell
{
static
let
cellReuseIdentifier
=
"YHVisaRenewalGuideIndentCell"
private
let
infoTitleLabelHorizontalOffset
:
CGFloat
=
5
private
let
infoTitleLabelToDetail
:
CGFloat
=
4
private
lazy
var
subContainerView
:
YHBaseDynamicCornerRadiusView
=
{
let
view
=
YHBaseDynamicCornerRadiusView
(
cornerRadius
:
2
,
corner
:
.
allCorners
)
view
.
backgroundColor
=
UIColor
(
hex
:
0xF4F6FA
)
return
view
}()
private
lazy
var
infoTitleLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
textAlignment
=
.
center
label
.
font
=
.
PFSC_M
(
ofSize
:
13
)
label
.
textColor
=
.
brandMainColor
return
label
}()
private
lazy
var
infoDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
13
)
label
.
textColor
=
.
mainTextColor70
label
.
numberOfLines
=
0
return
label
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
setupUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setupCellInfo
(
title
:
String
,
detail
:
String
)
{
infoTitleLabel
.
text
=
title
infoTitleLabel
.
sizeToFit
()
subContainerView
.
sizeToFit
()
let
paragraphStyle
=
NSMutableParagraphStyle
()
// 设置首行缩进量,单位为points
paragraphStyle
.
firstLineHeadIndent
=
infoTitleLabel
.
bounds
.
size
.
width
+
infoTitleLabelHorizontalOffset
*
2
+
infoTitleLabelToDetail
paragraphStyle
.
headIndent
=
0
paragraphStyle
.
lineHeightMultiple
=
1.07
let
attributedText
=
NSAttributedString
(
string
:
detail
,
attributes
:
[
NSAttributedString
.
Key
.
paragraphStyle
:
paragraphStyle
]
)
infoDetailLabel
.
attributedText
=
attributedText
}
}
extension
YHVisaRenewalGuideIndentCell
{
private
func
setupUI
()
{
selectionStyle
=
.
none
contentView
.
addSubview
(
subContainerView
)
subContainerView
.
addSubview
(
infoTitleLabel
)
contentView
.
addSubview
(
infoDetailLabel
)
subContainerView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
20
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
}
infoTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
infoTitleLabelHorizontalOffset
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
infoTitleLabelHorizontalOffset
)
make
.
top
.
bottom
.
equalToSuperview
()
}
infoDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
subContainerView
)
make
.
left
.
equalTo
(
subContainerView
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
make
.
bottom
.
equalToSuperview
()
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideParagraphCell.swift
0 → 100644
View file @
e6ef2048
//
// YHVisaRenewalGuideParagraphCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHVisaRenewalGuideParagraphCell
:
UITableViewCell
{
static
let
cellReuseIdentifier
=
"YHVisaRenewalGuideParagraphCell"
private
lazy
var
infoTitleLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_B
(
ofSize
:
16
)
label
.
textColor
=
.
mainTextColor
label
.
numberOfLines
=
0
return
label
}()
private
lazy
var
infoDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
14
)
label
.
textColor
=
.
mainTextColor70
label
.
numberOfLines
=
0
return
label
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
setupUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setupCellInfo
(
title
:
String
,
detail
:
String
)
{
infoTitleLabel
.
text
=
title
let
paragraphStyle
=
NSMutableParagraphStyle
()
paragraphStyle
.
lineHeightMultiple
=
1.07
let
attributedText
=
NSAttributedString
(
string
:
detail
,
attributes
:
[
NSAttributedString
.
Key
.
paragraphStyle
:
paragraphStyle
]
)
infoDetailLabel
.
attributedText
=
attributedText
}
}
extension
YHVisaRenewalGuideParagraphCell
{
private
func
setupUI
()
{
selectionStyle
=
.
none
contentView
.
addSubview
(
infoTitleLabel
)
contentView
.
addSubview
(
infoDetailLabel
)
infoTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
20
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
}
infoDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
infoTitleLabel
.
snp
.
bottom
)
.
offset
(
20
)
make
.
left
.
equalTo
(
infoTitleLabel
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
make
.
bottom
.
equalToSuperview
()
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideRemarkCell.swift
0 → 100644
View file @
e6ef2048
//
// YHVisaRenewalGuideRemarkCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHVisaRenewalGuideRemarkCell
:
UITableViewCell
{
static
let
cellReuseIdentifier
=
"YHVisaRenewalGuideRemarkCell"
private
lazy
var
infoDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
14
)
label
.
textColor
=
.
mainTextColor70
label
.
numberOfLines
=
0
return
label
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
setupUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setupCellInfo
(
detail
:
String
)
{
let
paragraphStyle
=
NSMutableParagraphStyle
()
paragraphStyle
.
lineHeightMultiple
=
1.07
let
attributedText
=
NSAttributedString
(
string
:
detail
,
attributes
:
[
NSAttributedString
.
Key
.
paragraphStyle
:
paragraphStyle
]
)
infoDetailLabel
.
attributedText
=
attributedText
}
}
extension
YHVisaRenewalGuideRemarkCell
{
private
func
setupUI
()
{
selectionStyle
=
.
none
contentView
.
addSubview
(
infoDetailLabel
)
infoDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
12
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
20
)
make
.
bottom
.
equalToSuperview
()
}
}
}
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/Resign(续签)/HongKongVisaRenewalPayment(续签在港缴费)/V/YHVisaRenewalGuideTipsCell.swift
0 → 100644
View file @
e6ef2048
//
// YHVisaRenewalGuideTipsCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
import
AttributedString
class
YHVisaRenewalGuideTipsCell
:
UITableViewCell
{
static
let
cellReuseIdentifier
=
"YHVisaRenewalGuideTipsCell"
private
lazy
var
iconView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
.
brandMainColor
return
view
}()
private
lazy
var
infoTitleLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_B
(
ofSize
:
14
)
label
.
textColor
=
.
mainTextColor
return
label
}()
private
lazy
var
infoDetailLabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
font
=
.
PFSC_R
(
ofSize
:
13
)
label
.
textColor
=
.
mainTextColor70
label
.
numberOfLines
=
0
return
label
}()
private
lazy
var
subContainerView
:
YHBaseDynamicCornerRadiusView
=
{
let
view
=
YHBaseDynamicCornerRadiusView
(
cornerRadius
:
6
,
corner
:
.
allCorners
)
view
.
backgroundColor
=
.
contentBkgColor
return
view
}()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
setupUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setupCellInfo
(
title
:
String
,
detail
:
ASAttributedString
)
{
infoTitleLabel
.
text
=
title
infoDetailLabel
.
attributed
.
text
=
detail
}
}
extension
YHVisaRenewalGuideTipsCell
{
private
func
setupUI
()
{
selectionStyle
=
.
none
contentView
.
addSubview
(
subContainerView
)
subContainerView
.
addSubview
(
iconView
)
subContainerView
.
addSubview
(
infoTitleLabel
)
subContainerView
.
addSubview
(
infoDetailLabel
)
subContainerView
.
setContentHuggingPriority
(
.
defaultLow
,
for
:
.
vertical
)
subContainerView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
20
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
20
)
make
.
bottom
.
equalToSuperview
()
}
iconView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
18
)
make
.
left
.
equalToSuperview
()
make
.
width
.
equalTo
(
4
)
make
.
height
.
equalTo
(
14
)
}
infoTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
centerY
.
equalTo
(
iconView
)
make
.
left
.
equalTo
(
iconView
.
snp
.
right
)
.
offset
(
12
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
16
)
}
infoDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
infoTitleLabel
.
snp
.
bottom
)
.
offset
(
12
)
make
.
left
.
equalTo
(
infoTitleLabel
)
make
.
right
.
lessThanOrEqualToSuperview
()
.
offset
(
-
16
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
16
)
}
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/Contents.json
0 → 100644
View file @
e6ef2048
{
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_bg.imageset/Contents.json
0 → 100644
View file @
e6ef2048
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"resign_visa_guide_bg@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"resign_visa_guide_bg@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_bg.imageset/resign_visa_guide_bg@2x.png
0 → 100644
View file @
e6ef2048
141 KB
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_bg.imageset/resign_visa_guide_bg@3x.png
0 → 100644
View file @
e6ef2048
226 KB
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_tips.imageset/Contents.json
0 → 100644
View file @
e6ef2048
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"resign_visa_guide_tips@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"resign_visa_guide_tips@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_tips.imageset/resign_visa_guide_tips@2x.png
0 → 100644
View file @
e6ef2048
625 Bytes
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_tips.imageset/resign_visa_guide_tips@3x.png
0 → 100644
View file @
e6ef2048
851 Bytes
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_title.imageset/Contents.json
0 → 100644
View file @
e6ef2048
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"resign_visa_guide_title@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"resign_visa_guide_title@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_title.imageset/resign_visa_guide_title@2x.png
0 → 100644
View file @
e6ef2048
10.4 KB
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_title.imageset/resign_visa_guide_title@3x.png
0 → 100644
View file @
e6ef2048
14.9 KB
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_warn.imageset/Contents.json
0 → 100644
View file @
e6ef2048
{
"images"
:
[
{
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"resign_visa_guide_warn@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"resign_visa_guide_warn@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_warn.imageset/resign_visa_guide_warn@2x.png
0 → 100644
View file @
e6ef2048
519 Bytes
galaxy/galaxy/Res/Assets.xcassets/ServiceCenter/续签/续签在港缴费/resign_visa_guide_warn.imageset/resign_visa_guide_warn@3x.png
0 → 100644
View file @
e6ef2048
741 Bytes
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