Commit f9642897 authored by pete谢兆麟's avatar pete谢兆麟

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

parents 84731832 c8b6ee63
This diff is collapsed.
......@@ -10,7 +10,7 @@ import UIKit
class YHCertificateAppointViewController: YHBaseViewController {
var items = ["", ""]
var items = ["", "", ""]
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 16.0
......@@ -21,9 +21,11 @@ class YHCertificateAppointViewController: YHBaseViewController {
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor(hex: 0xF8F9FB)
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHCertificateAppointOptionCell.self, forCellReuseIdentifier: YHCertificateAppointOptionCell.cellReuseIdentifier)
tableView.register(YHSelectApplicantGroupCell.self, forCellReuseIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier)
tableView.register(YHGrabNumberListCell.self, forCellReuseIdentifier: YHGrabNumberListCell.cellReuseIdentifier)
return tableView
}()
......@@ -60,8 +62,13 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
return cell
}
if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
return cell
}
let cell = tableView.dequeueReusableCell(withIdentifier: YHGrabNumberListCell.cellReuseIdentifier, for: indexPath) as! YHGrabNumberListCell
return cell
}
......
//
// YHGrabFileCell.swift
// galaxy
//
// Created by edy on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGrabFileCell: UICollectionViewCell {
static let cellReuseIdentifier = "YHGrabFileCell"
lazy var selectImgView:UIImageView = {
let view = UIImageView(image: UIImage(named: ""))
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.layer.cornerRadius = 5.0
self.layer.borderWidth = 0.5
self.layer.borderColor = UIColor.separatorColor.cgColor
self.backgroundColor = UIColor.init(hex: 0xD8D8D8)
}
}
//
// YHGrabNumberInfoView.swift
// galaxy
//
// Created by edy on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
enum YHGrabItemViewType: Int {
case info
case grab
case files
}
class YHGrabItem {
var type: YHGrabItemViewType = .info
var title: String = ""
var detail: String = ""
var files:[String] = []
required init() {
}
init(type: YHGrabItemViewType, title: String, detail: String, files:[String] = []) {
self.type = type
self.title = title
self.detail = detail
self.files = files
}
}
class YHGrabNumberInfoItemView: UIView {
let dotWidth = 4.0
let titleMaxWidth = 112.0
let grabNumColor = UIColor.brandMainColor
let infoColor = UIColor.mainTextColor
let gap = 8.0
let fileWidth = floorl((KScreenWidth-48.0*2.0-8.0*3.0)/4.0)
var item: YHGrabItem = YHGrabItem()
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.minimumInteritemSpacing = 8.0
layout.minimumLineSpacing = 16
let collectView = UICollectionView(frame:.zero, collectionViewLayout: layout)
collectView.delegate = self
collectView.dataSource = self
collectView.backgroundColor = .clear
// 注册自定义单元格
collectView.register(YHGrabFileCell.self, forCellWithReuseIdentifier: YHGrabFileCell.cellReuseIdentifier)
return collectView
}()
func updateItem(_ item: YHGrabItem) {
self.item = item
titleLabel.text = item.title
detailLabel.text = item.detail
if item.type == .grab {
detailLabel.textColor = grabNumColor
} else {
detailLabel.textColor = infoColor
}
dotView.isHidden = (item.type != .grab)
collectionView.isHidden = item.type != .files
collectionView.reloadData()
var rowCount = item.files.count/4
if item.files.count%4 != 0 {
rowCount += 1
}
collectionView.snp.remakeConstraints { make in
make.left.right.bottom.equalTo(0)
make.top.equalTo(detailLabel.snp.bottom).offset(16)
if item.type == .files {
make.height.equalTo((fileWidth+16.0)*Double(rowCount))
} else {
make.height.equalTo(0)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
lazy var dotView: UIView = {
let view = UIView()
view.backgroundColor = .brandMainColor
view.layer.cornerRadius = self.dotWidth/2.0
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = .mainTextColor(alpha: 0.5)
return label
}()
lazy var detailLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.textAlignment = .right
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = self.infoColor
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(titleLabel)
self.addSubview(detailLabel)
self.addSubview(dotView)
self.addSubview(collectionView)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.top.equalTo(0)
make.width.equalTo(titleMaxWidth)
}
detailLabel.snp.makeConstraints { make in
make.right.equalTo(0)
make.top.equalTo(0)
make.height.greaterThanOrEqualTo(20.0)
}
dotView.snp.makeConstraints { make in
make.width.height.equalTo(dotWidth)
make.centerY.equalTo(detailLabel)
make.right.equalTo(detailLabel.snp.left).offset(-4)
make.left.greaterThanOrEqualTo(titleLabel.snp.right).offset(0)
}
collectionView.snp.makeConstraints { make in
make.left.right.equalTo(0)
make.top.equalTo(detailLabel.snp.bottom).offset(16)
make.height.equalTo(fileWidth)
make.bottom.equalTo(0)
}
}
}
class YHGrabNumberInfoView: UIView {
var items:[YHGrabItem] = []
lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.textColor = .mainTextColor
return label
}()
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.backgroundColor = UIColor.init(hex: 0xF8F9FB)
self.layer.cornerRadius = kCornerRadius4
self.clipsToBounds = true
self.addSubview(titleLabel)
self.addSubview(lineView)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(14)
make.top.equalTo(16)
}
lineView.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.height.equalTo(0.5)
make.top.equalTo(titleLabel.snp.bottom).offset(10)
}
}
func updateItems(_ items: [YHGrabItem]) {
self.items = items
var lastView: YHGrabNumberInfoItemView? = nil
for (index, item) in items.enumerated() {
let itemView = YHGrabNumberInfoItemView(frame: .zero)
self.addSubview(itemView)
itemView.updateItem(item)
itemView.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
if let last = lastView {
make.top.equalTo(last.snp.bottom).offset(0)
} else {
make.top.equalTo(lineView.snp.bottom).offset(12)
}
if index == items.count-1 {
make.bottom.equalTo(0)
}
}
lastView = itemView
}
}
}
extension YHGrabNumberInfoItemView: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
// 返回单元格数量
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return item.files.count
}
// 返回每个单元格的大小
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: fileWidth, height: fileWidth)
}
// 返回自定义单元格
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHGrabFileCell.cellReuseIdentifier, for: indexPath) as! YHGrabFileCell
if 0 <= indexPath.item && indexPath.item < item.files.count {
let applicant = item.files[indexPath.item]
}
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if 0 <= indexPath.item && indexPath.item < item.files.count {
let text = item.files[indexPath.item]
}
}
}
//
// YHGrabNumberListCell.swift
// galaxy
//
// Created by edy on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGrabNumberListCell: UITableViewCell {
static let cellReuseIdentifier = "YHGrabNumberListCell"
var items:[String] = ["", ""]
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.textColor = .mainTextColor
label.font = UIFont.PFSC_M(ofSize: 17)
label.text = "赴港办理抢号中批次"
return label
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
func setupUI() {
self.selectionStyle = .none
self.backgroundColor = .clear
self.contentView.backgroundColor = .clear
contentView.addSubview(whiteContentView)
whiteContentView.addSubview(titleLabel)
whiteContentView.addSubview(lineView)
whiteContentView.snp.makeConstraints { make in
make.top.equalTo(16)
make.left.equalTo(16)
make.right.equalTo(-16)
make.bottom.equalTo(0)
}
titleLabel.snp.makeConstraints { make in
make.top.equalTo(18)
make.left.equalTo(18)
make.right.equalTo(-18)
}
lineView.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(12)
make.left.right.equalToSuperview()
make.height.equalTo(0.5)
}
var lastView: YHGrabNumberListView? = nil
for (index, _) in items.enumerated() {
let listView = YHGrabNumberListView(frame: .zero)
let chineseNum = convertNumberToChineseText(index+1)
listView.titleLabel.text = "第\(chineseNum)批"
listView.membersLabel.text = "成员:刘德华德成员:刘德华德、刘德华德、刘德华德、刘德华德、刘德华德、刘德华德、刘德华德、刘德华德、刘德华德"
whiteContentView.addSubview(listView)
listView.snp.makeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
if let last = lastView {
make.top.equalTo(last.snp.bottom)
} else {
make.top.equalTo(lineView.snp.bottom)
}
if index == items.count-1 {
make.bottom.equalTo(-16)
}
}
lastView = listView
}
}
//阿拉伯数字转文字
func convertNumberToChineseText(_ number: Int) -> String {
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "zh_CN")
numberFormatter.numberStyle = .spellOut
return numberFormatter.string(from: NSNumber(value: number)) ?? ""
}
}
//
// YHGrabNumberListView.swift
// galaxy
//
// Created by edy on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGrabNumberListView: UIView {
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var markView:UIView = {
let view = UIView()
view.backgroundColor = .brandMainColor
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 16)
label.textColor = .mainTextColor
return label
}()
lazy var cancelAppointBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .white
btn.titleLabel?.font = .PFSC_M(ofSize: 12)
btn.setTitle("取消预约", for: .normal)
btn.setTitleColor(.brandMainColor, for: .normal)
btn.layer.cornerRadius = kCornerRadius3
btn.layer.borderWidth = 1.0
btn.layer.borderColor = UIColor.brandMainColor.cgColor
return btn
}()
lazy var membersLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14)
label.text = "成员:"
label.textColor = .mainTextColor(alpha: 0.7)
return label
}()
lazy var grabInfoView: YHGrabNumberInfoView = {
let view = YHGrabNumberInfoView(frame: .zero)
view.titleLabel.text = "抢号信息"
let items = [YHGrabItem(type: .grab, title: "赴港时间:", detail: "抢号中"),
YHGrabItem(type: .grab, title: "香港入境处:", detail: "抢号中"),
YHGrabItem(type: .grab, title: "抢号反馈回执:", detail: "抢号中"),]
view.updateItems(items)
return view
}()
lazy var intentionInfoView: UIView = {
let view = YHGrabNumberInfoView(frame: .zero)
view.titleLabel.text = "意向信息"
let items = [YHGrabItem(type: .info, title: "期望赴港时间:", detail: "2023-07-17 ~ 2023-08-22"),
YHGrabItem(type: .info, title: "期望香港办证点:", detail: "屯门办事处(屯门)"),
YHGrabItem(type: .files, title: "抢号反馈回执:", detail: "", files: ["","","","",""]),]
view.updateItems(items)
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(lineView)
self.addSubview(markView)
self.addSubview(titleLabel)
self.addSubview(cancelAppointBtn)
self.addSubview(membersLabel)
self.addSubview(grabInfoView)
self.addSubview(intentionInfoView)
lineView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.height.equalTo(0.5)
}
cancelAppointBtn.snp.makeConstraints { make in
make.top.equalTo(12)
make.right.equalTo(-18)
make.size.equalTo(CGSizeMake(70, 32))
}
markView.snp.makeConstraints { make in
make.size.equalTo(CGSizeMake(3, 14))
make.left.equalTo(0)
make.centerY.equalTo(cancelAppointBtn)
}
titleLabel.snp.makeConstraints { make in
make.left.equalTo(markView.snp.right).offset(6)
make.height.equalTo(22)
make.centerY.equalTo(cancelAppointBtn)
}
membersLabel.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
grabInfoView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(membersLabel.snp.bottom).offset(16)
// make.height.equalTo(166)
}
intentionInfoView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(grabInfoView.snp.bottom).offset(16)
// make.height.equalTo(130)
make.bottom.equalTo(-16)
}
}
}
//
// YHVisaPaymentVC.swift
// galaxy
//
// Created by davidhuangA on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHVisaPaymentVC: YHBaseViewController {
var items: [String] = ["1", "1"] //for test hjl
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 16.0
tableView.estimatedSectionFooterHeight = 0.01
tableView.contentInsetAdjustmentBehavior = .never
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = .clear
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHVisaPaymentTipsCell.self, forCellReuseIdentifier: YHVisaPaymentTipsCell.cellReuseIdentifier)
tableView.register(YHVisaPayTypeCell.self, forCellReuseIdentifier: YHVisaPayTypeCell.cellReuseIdentifier)
return tableView
}()
//我已悉知,确认
lazy var rewardBtn: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.contentHorizontalAlignment = .center
button.setTitle("我已全部缴费,下一步", for: .normal)
button.setTitle("缴费结果更新中,请耐心等待", for: .disabled)
button.setTitleColor(UIColor.white, for: .normal)
button.setTitleColor(UIColor.white, for: .disabled)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.addTarget(self, action: #selector(clickNextBtn), for: .touchUpInside)
button.backgroundColor = UIColor.brandMainColor
return button
}()
lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .clear
view.addSubview(self.rewardBtn)
self.rewardBtn.snp.makeConstraints { make in
make.top.equalToSuperview().offset(10)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(44)
}
view.layer.zPosition = 10
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
private extension YHVisaPaymentVC {
func setupUI() {
gk_navTitle = "签证缴费"
gk_navBarAlpha = 1.0
gk_navBackgroundColor = .white
view.backgroundColor = UIColor.contentBkgColor
view.addSubview(tableView)
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(98)
}
tableView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(kMargin)
make.right.equalToSuperview().offset(-kMargin)
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(bottomView.snp.top)
}
}
@objc func clickNextBtn() {
YHHUD.flash(message: "预计会在1个工作日内更新缴费结果")
disableSureButton()
}
func disableSureButton() {
rewardBtn.isEnabled = false
rewardBtn.backgroundColor = UIColor.brandMainColor30
}
}
extension YHVisaPaymentVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if 0 <= indexPath.section && indexPath.section < items.count {
if indexPath.section == 0 {
let warningCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPaymentTipsCell.cellReuseIdentifier, for: indexPath)
return warningCell
}
}
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPayTypeCell.cellReuseIdentifier, for: indexPath)
return approveCell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 0 {
return YHVisaPaymentTipsCell.cellH
}
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 16.0
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
return view
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let view = UIView()
return view
}
}
//
// YHVisaPayTypeCell.swift
// galaxy
//
// Created by davidhuangA on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
import Photos
class YHVisaPayTypeCell: UITableViewCell {
static let cellReuseIdentifier = "YHVisaPayTypeCell"
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
view.clipsToBounds = true
view.backgroundColor = .white
return view
}()
/// 已添加的长按手势
private lazy var longPress: UILongPressGestureRecognizer = {
return UILongPressGestureRecognizer(target: self, action: #selector(onLongPress(_:)))
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
}
private extension YHVisaPayTypeCell {
func saveImage(_ image: UIImage) {
// 确保应用有权访问相册
PHPhotoLibrary.requestAuthorization { status in
if status == .authorized {
// 保存图片到相册
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
DispatchQueue.main.async {
YHHUD.flash(message: "保存成功")
}
} else {
YHHUD.flash(message: "保存失败,请检查系统权限")
}
}
}
/// 长按
@objc func onLongPress(_ press: UILongPressGestureRecognizer) {
if press.state == .began {
saveImage(UIImage(named: "visaPay_qr") ?? UIImage())
}
}
func setupUI() {
selectionStyle = .none
backgroundColor = .clear
contentView.backgroundColor = .clear
contentView.addSubview(whiteContentView)
whiteContentView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
//
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_M(ofSize:17)
label.text = "港府官网缴费方式"
whiteContentView.addSubview(label)
label.snp.makeConstraints { make in
make.top.equalTo(kMargin)
make.left.equalTo(kMargin)
make.height.equalTo(24)
}
let line = UIView()
line.backgroundColor = .separatorColor
whiteContentView.addSubview(line)
line.snp.makeConstraints { make in
make.top.equalTo(label.snp.bottom).offset(12)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(1)
}
let label1 = UILabel()
label1.textColor = UIColor.mainTextColor
label1.font = UIFont.PFSC_M(ofSize:14)
label1.text = "方式一"
whiteContentView.addSubview(label1)
label1.snp.makeConstraints { make in
make.top.equalTo(line.snp.bottom).offset(kMargin)
make.left.equalTo(kMargin)
make.height.equalTo(20)
}
let label2 = UILabel()
label2.textColor = UIColor.mainTextColor50
label2.font = UIFont.PFSC_R(ofSize:12)
label2.text = "点击下方链接,跳转浏览器,进入港府官网操作缴费"
whiteContentView.addSubview(label2)
label2.snp.makeConstraints { make in
make.top.equalTo(label1.snp.bottom).offset(6)
make.left.equalTo(kMargin)
make.height.equalTo(17)
}
let holdView = UIView()
holdView.backgroundColor = .separatorColor
holdView.layer.cornerRadius = kCornerRadius4
holdView.clipsToBounds = true
whiteContentView.addSubview(holdView)
holdView.snp.makeConstraints { make in
make.top.equalTo(label2.snp.bottom).offset(6)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(66)
}
let link = UILabel()
link.numberOfLines = 0
link.textColor = UIColor.brandMainColor
link.font = UIFont.PFSC_R(ofSize:12)
let linkTxt : String = "https://www.gov.hk/tc/residents/immigration/nonpermanent/onlinepaymentforevisa.htm"
let aa: ASAttributedString = .init(NSAttributedString(string: linkTxt), .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.brandMainColor),.underline([.single], color: UIColor.brandMainColor),.action {
if let url = URL(string: linkTxt) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// 显示一个提示,告知用户无法打开链接
print("无法打开链接")
}
}
})
link.attributed.text = aa
holdView.addSubview(link)
link.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
}
let line2 = UIView()
line2.backgroundColor = .separatorColor
whiteContentView.addSubview(line2)
line2.snp.makeConstraints { make in
make.top.equalTo(holdView.snp.bottom).offset(16)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(1)
}
let qrCode : UIImageView = UIImageView(image: UIImage(named: "visaPay_qr"))
qrCode.contentMode = .scaleAspectFill
qrCode.isUserInteractionEnabled = true
qrCode.addGestureRecognizer(longPress)
whiteContentView.addSubview(qrCode)
qrCode.snp.makeConstraints { make in
make.top.equalTo(line2.snp.bottom).offset(18)
make.right.equalTo(-kMargin)
make.height.width.equalTo(86)
make.bottom.equalToSuperview().offset(-kMargin)
}
let label3 = UILabel()
label3.textColor = UIColor.mainTextColor
label3.font = UIFont.PFSC_M(ofSize:14)
label3.text = "方式二"
whiteContentView.addSubview(label3)
label3.snp.makeConstraints { make in
make.top.equalTo(qrCode.snp.top).offset(12)
make.left.equalTo(kMargin)
make.height.equalTo(20)
}
let label4 = UILabel()
label4.numberOfLines = 0
label4.lineBreakMode = .byWordWrapping
label4.textColor = UIColor.mainTextColor50
label4.font = UIFont.PFSC_R(ofSize:12)
label4.text = "用其他设备直接扫码,或长按保存图片,通过微信识别打开"
whiteContentView.addSubview(label4)
label4.snp.makeConstraints { make in
make.top.equalTo(label3.snp.bottom).offset(6)
make.left.equalTo(kMargin)
make.right.equalTo(qrCode.snp.left).offset(-kMargin)
}
}
}
//
// YHVisaPaymentTipsCell.swift
// galaxy
//
// Created by davidhuangA on 2024/8/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHVisaPaymentTipsCell: UITableViewCell {
static let cellReuseIdentifier = "YHVisaPaymentTipsCell"
static let cellH : CGFloat = 184.0 * (KScreenWidth - 16 * 2) / 343.0
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
view.clipsToBounds = true
return view
}()
lazy var bgImgView: UIImageView = {
let view = UIImageView(image: UIImage(named: "visalPay_tips"))
view.layer.cornerRadius = kCornerRadius6
view.clipsToBounds = true
return view
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
func setupUI() {
selectionStyle = .none
backgroundColor = .clear
contentView.backgroundColor = .clear
contentView.addSubview(whiteContentView)
whiteContentView.addSubview(bgImgView)
whiteContentView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
bgImgView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}
......@@ -120,11 +120,14 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
view.likeClick = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMyLikeActivityViewController()
vc.myDefaultNavItemIndex = 0
self.navigationController?.pushViewController(vc)
// if !checkLogin() { return }
// let vc = YHMyLikeActivityViewController()
// vc.myDefaultNavItemIndex = 0
// self.navigationController?.pushViewController(vc)
print("点赞")
let vc = YHVisaPaymentVC()
self.navigationController?.pushViewController(vc) //for test hjl
}
view.collectClick = {
[weak self] in
......@@ -338,6 +341,7 @@ extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
}
if true {
// test dy
let vc = YHCertificateAppointViewController()
self.navigationController?.pushViewController(vc)
return
......
......@@ -12,7 +12,7 @@ extension CGFloat {
public func scaleSizeFrom375px(size: CGFloat) -> CGFloat {
let screenWidth = UIScreen.main.bounds.width
// 假设设计稿基于375pt宽度,iPhone 6的屏幕宽度
let baseWidth: CGFloat = 375
let baseWidth: CGFloat = 375.0
// 计算换算比例
let scale = screenWidth / baseWidth
// 应用换算比例
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "image 56@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "image 56@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "tips@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "tips@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment