Commit 06342c5d authored by David黄金龙's avatar David黄金龙

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

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  // 消息
  案例分享逻辑修改
  在港记录页面完善
parents cd7c6972 da381d2f
This diff is collapsed.
//
// YHBaseCornerRadiusBorderView.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHBaseCornerRadiusBorderView: UIView {
private var radius: CGFloat = 2
private var corner: UIRectCorner = .allCorners
var lineWidth: CGFloat? {
didSet {
if lineWidth != oldValue {
boarderLayers?.forEach {
$0.removeFromSuperlayer()
}
boarderLayers = nil
boarderLayers = createRoundedCornersAndBorder(corners: corner, radii: CGSize(width: radius, height: radius), lineWidth: lineWidth, lineColor: lineColor)
}
}
}
var lineColor: CGColor? {
didSet {
if lineColor != oldValue {
boarderLayers?.forEach {
$0.removeFromSuperlayer()
}
boarderLayers = nil
boarderLayers = createRoundedCornersAndBorder(corners: corner, radii: CGSize(width: radius, height: radius), lineWidth: lineWidth, lineColor: lineColor)
}
}
}
public init(cornerRadius: CGFloat, corner: UIRectCorner, lineWidth: CGFloat?, lineColor: CGColor?) {
self.corner = corner
self.radius = cornerRadius
self.lineWidth = lineWidth
self.lineColor = lineColor
super.init(frame: CGRect.zero)
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private var boarderLayers: [CAShapeLayer]?
private var viewBounds = CGRect.zero {
didSet {
guard viewBounds != oldValue else {
return
}
boarderLayers?.forEach {
$0.removeFromSuperlayer()
}
boarderLayers = nil
boarderLayers = createRoundedCornersAndBorder(corners: corner, radii: CGSize(width: radius, height: radius), lineWidth: lineWidth, lineColor: lineColor)
}
}
override public func layoutSubviews() {
super.layoutSubviews()
viewBounds = bounds
}
}
......@@ -34,6 +34,9 @@ class YHBaseDynamicCornerRadiusView: UIView {
private var viewBounds = CGRect.zero {
didSet {
guard viewBounds != oldValue else {
return
}
boarderLayer?.removeFromSuperlayer()
boarderLayer = nil
if let corner = corner {
......
......@@ -229,11 +229,6 @@ extension YHServiceCenterViewController {
}
@objc func pushOrderView() {
// let vc = YHResignGuidelinesExampleViewController()
// self.navigationController?.pushViewController(vc)
// return
var flag = true
if self.state == 1 || self.state == 3 {
......
......@@ -11,24 +11,30 @@ import JXSegmentedView
class YHHKRecordsContentVC: YHBaseViewController {
private lazy var tableView: UITableView = {
let view = UITableView(frame:.zero, style:.grouped)
view.estimatedSectionHeaderHeight = 16.0
view.estimatedSectionFooterHeight = 0.01
view.sectionHeaderHeight = 16.0
view.sectionFooterHeight = 0.01
view.contentInsetAdjustmentBehavior = .never
view.showsVerticalScrollIndicator = false
view.separatorStyle = .none
view.delegate = self
view.dataSource = self
view.backgroundColor = .clear
view.rowHeight = 52
view.tableFooterView = UITableViewHeaderFooterView()
view.register(YHResignDocumentHeaderCell.self, forCellReuseIdentifier: YHResignDocumentHeaderCell.cellReuseIdentifier)
view.register(YHResignDocumentContentCell.self, forCellReuseIdentifier: YHResignDocumentContentCell.cellReuseIdentifier)
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
extension YHHKRecordsContentVC {
......@@ -36,6 +42,13 @@ extension YHHKRecordsContentVC {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = UIColor.contentBkgColor
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview()
make.top.bottom.equalToSuperview()
}
tableView.tableFooterView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin))
}
}
......@@ -44,3 +57,29 @@ extension YHHKRecordsContentVC: JXSegmentedListContainerViewListDelegate {
return view
}
}
extension YHHKRecordsContentVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
0
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
}
//
// YHHKRecordsCustomerItemCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsCustomerItemCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsCustomerItemCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 17)
label.textColor = UIColor(hexString: "#222222")
return label
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor50
label.font = .PFSC_R(ofSize: 14)
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
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: String?) {
infoTitleLabel.text = title
infoDetailLabel.text = detail
}
}
extension YHHKRecordsCustomerItemCell {
private func setupUI() {
updateCellCorner(.top)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel)
subContainerView.addSubview(bottomLineView)
infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
bottomLineView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-12)
}
infoDetailLabel.snp.makeConstraints { make in
make.left.greaterThanOrEqualTo(infoTitleLabel.snp.right).offset(6)
make.centerY.equalTo(infoTitleLabel)
make.right.equalToSuperview().offset(-18)
}
}
}
......@@ -14,7 +14,7 @@ class YHHKRecordsDurationItemCell: YHHKRecordsSectionItemBaseCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor70
return label
}()
......
//
// YHHKRecordsEditButtonCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsEditButtonCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsEditButtonCell"
private lazy var centerLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 14)
label.textColor = UIColor(hexString: "#222222")
return label
}()
private lazy var topLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
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?) {
centerLabel.text = title
}
}
extension YHHKRecordsEditButtonCell {
private func setupUI() {
updateCellCorner(.bottom)
subContainerView.addSubview(centerLabel)
subContainerView.addSubview(topLineView)
topLineView.snp.makeConstraints { make in
make.top.equalToSuperview()
make.left.equalToSuperview()
make.right.equalToSuperview()
make.height.equalTo(1)
}
centerLabel.snp.makeConstraints { make in
make.center.equalToSuperview()
}
}
}
......@@ -13,7 +13,7 @@ class YHHKRecordsHeaderCell: UITableViewCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:17)
label.font = .PFSC_M(ofSize: 17)
label.textColor = .mainTextColor
return label
}()
......@@ -55,7 +55,7 @@ extension YHHKRecordsHeaderCell {
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.bottom.equalTo(bottomLineView.snp.top).offset(-12)
make.bottom.equalToSuperview().offset(-12)
}
}
}
//
// YHHKRecordsInfoItemCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsInfoItemCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsInfoItemCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor50
return label
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor
label.font = .PFSC_R(ofSize: 14)
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?, topMargin: CGFloat = 18, bottomMargin: CGFloat = 18) {
infoTitleLabel.text = title
infoDetailLabel.text = detail
infoTitleLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(topMargin)
make.bottom.equalToSuperview().offset(-bottomMargin)
}
}
}
extension YHHKRecordsInfoItemCell {
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel)
infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(9)
make.bottom.equalToSuperview().offset(-9)
}
infoDetailLabel.snp.makeConstraints { make in
make.left.greaterThanOrEqualTo(infoTitleLabel.snp.right).offset(6)
make.centerY.equalTo(infoTitleLabel)
make.right.equalToSuperview().offset(-18)
}
}
}
......@@ -14,7 +14,7 @@ class YHHKRecordsLastStayCell: YHHKRecordsSectionItemBaseCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor50
return label
}()
......
//
// YHHKRecordsPersonnelSelectCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsPersonnelSelectCell: UICollectionViewCell {
static let cellReuseIdentifier = "YHHKRecordsPersonnelSelectCell"
static let cellHeight: CGFloat = 32
static let offsetX: CGFloat = 10
static let labelFont = UIFont.PFSC_R(ofSize: 13)
let defaultBgColor: UIColor = .contentBkgColor
let defaultFontColor: UIColor = .mainTextColor
let selectedBgColor: UIColor = .brandMainColor8
let selectedFontColor: UIColor = .brandMainColor
let selectedBorderColor: UIColor = .brandMainColor
private lazy var backCover: YHBaseCornerRadiusBorderView = {
let view = YHBaseCornerRadiusBorderView(cornerRadius: 3, corner: .allCorners, lineWidth: nil, lineColor: selectedBorderColor.cgColor)
view.backgroundColor = defaultBgColor
return view
}()
private lazy var tagLabel: UILabel = {
let label = UILabel(frame: CGRect.zero)
label.textColor = defaultFontColor
label.font = YHHKRecordsPersonnelSelectCell.labelFont
label.textAlignment = .center
label.lineBreakMode = .byTruncatingTail
return label
}()
private lazy var selctedBadgeIcon: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "personnel_selected_badge")
view.isHidden = true
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
configViews()
}
override var isSelected: Bool {
didSet {
if isSelected {
backCover.backgroundColor = selectedBgColor
tagLabel.textColor = selectedFontColor
backCover.lineWidth = 1
selctedBadgeIcon.isHidden = false
} else {
backCover.backgroundColor = defaultBgColor
tagLabel.textColor = defaultFontColor
backCover.lineWidth = nil
selctedBadgeIcon.isHidden = true
}
}
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func configViews() {
contentView.addSubview(backCover)
backCover.addSubview(tagLabel)
backCover.addSubview(selctedBadgeIcon)
backCover.snp.makeConstraints { maker in
maker.edges.equalToSuperview()
}
tagLabel.snp.makeConstraints { maker in
maker.top.bottom.equalToSuperview()
maker.left.equalToSuperview().offset(YHHKRecordsPersonnelSelectCell.offsetX).priority(.high)
maker.right.equalToSuperview().offset(-YHHKRecordsPersonnelSelectCell.offsetX).priority(.high)
}
selctedBadgeIcon.snp.makeConstraints { make in
make.bottom.right.equalToSuperview()
make.width.height.equalTo(14)
}
}
func setupCellInfo(_ text: String?) {
tagLabel.text = text
}
}
//
// YHHKRecordsRemarkCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsRemarkCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsRemarkCell"
var textViewDidChanged: ((UITextView) -> Void)?
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor50
return label
}()
private lazy var remarkTextView: UITextView = {
let view = UITextView()
view.font = .PFSC_R(ofSize: 14)
view.textColor = .mainTextColor
view.tintColor = .mainTextColor
view.backgroundColor = .contentBkgColor
view.font = UIFont.systemFont(ofSize: 14)
view.returnKeyType = .default
view.enablesReturnKeyAutomatically = true
view.delegate = self
view.addObserver(self, forKeyPath: "attributedText", options: .new, context: nil)
view.textContainerInset = UIEdgeInsets.zero
view.textContainer.lineFragmentPadding = 0
return view
}()
private lazy var editTipsLabel: UILabel = {
let label = UILabel()
label.isHidden = true
label.text = "请输入备注内容"
label.font = UIFont.systemFont(ofSize: 14)
label.textColor = .mainTextColor30
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? = "备注:", titleColor: UIColor = .mainTextColor50, detail: String?, isEditable: Bool = false, cellType: YHResignRoundCellType = .mid) {
updateCellCorner(cellType)
infoTitleLabel.text = title
remarkTextView.isEditable = isEditable
remarkTextView.text = detail
editTipsLabel.isHidden = !isEditable || (detail?.count ?? 0) > 0
}
}
extension YHHKRecordsRemarkCell {
private func setupUI() {
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(remarkTextView)
subContainerView.addSubview(editTipsLabel)
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(16)
}
remarkTextView.snp.makeConstraints { make in
make.left.equalTo(infoTitleLabel)
make.right.equalToSuperview().offset(18)
make.height.equalTo(88)
make.top.equalTo(infoTitleLabel.snp.bottom).offset(8)
make.bottom.equalToSuperview().offset(-16)
}
editTipsLabel.snp.makeConstraints { make in
make.left.equalTo(remarkTextView.snp.left).offset(12)
make.top.equalTo(remarkTextView.snp.top).offset(10)
}
}
}
extension YHHKRecordsRemarkCell: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
editTipsLabel.isHidden = textView.text.count > 0
textViewDidChanged?(textView)
}
}
......@@ -14,7 +14,7 @@ class YHHKRecordsSectionHeaderCell: YHHKRecordsSectionItemBaseCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:14)
label.font = .PFSC_M(ofSize: 14)
label.textColor = .mainTextColor
return label
}()
......
//
// YHHKRecordsStayingPersonnelCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsStayingPersonnelCell: YHResignDocumentCell {
private static let offsetX: CGFloat = 18
private static let offsetTop: CGFloat = 8
private static let offsetBottom: CGFloat = 24
private static let minimumLineSpacing: CGFloat = 12
private static let minimumInteritemSpacing: CGFloat = 8
var selectItemAction: ((String?) -> Void)?
var collectionData: [String] = [] {
didSet {
infoCollectionView.reloadData()
}
}
private var minWidth: CGFloat {
return (KScreenWidth - YHHKRecordsStayingPersonnelCell.offsetX * 2 - YHHKRecordsStayingPersonnelCell.minimumLineSpacing * 3) / 4.0
}
private var maxWidth: CGFloat {
return (KScreenWidth - YHHKRecordsStayingPersonnelCell.offsetX * 2)
}
static let cellReuseIdentifier = "YHHKRecordsStayingPersonnelCell"
private lazy var asteriskIcon: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "asterisk_icon_6")
return view
}()
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = UIColor(hexString: "#222222")
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
private lazy var layout: AlignedCollectionViewFlowLayout = {
return AlignedCollectionViewFlowLayout(horizontalAlignment: .left)
}()
private lazy var infoCollectionView: UICollectionView = {
layout.minimumLineSpacing = YHHKRecordsStayingPersonnelCell.minimumLineSpacing
layout.minimumInteritemSpacing = YHHKRecordsStayingPersonnelCell.minimumInteritemSpacing
layout.scrollDirection = .vertical
layout.sectionInset = UIEdgeInsets(top: YHHKRecordsStayingPersonnelCell.offsetTop, left: YHHKRecordsStayingPersonnelCell.offsetX, bottom: YHHKRecordsStayingPersonnelCell.offsetBottom, right: YHHKRecordsStayingPersonnelCell.offsetX)
let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
collectionView.backgroundColor = .white
collectionView.delegate = self
collectionView.dataSource = self
collectionView.showsHorizontalScrollIndicator = false
collectionView.register(YHHKRecordsPersonnelSelectCell.self, forCellWithReuseIdentifier: YHHKRecordsPersonnelSelectCell.cellReuseIdentifier)
return collectionView
}()
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?) {
infoTitleLabel.text = title
}
}
extension YHHKRecordsStayingPersonnelCell {
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(asteriskIcon)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(bottomLineView)
asteriskIcon.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.centerY.equalTo(infoTitleLabel)
make.width.height.equalTo(6)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(asteriskIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
}
bottomLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(1)
}
infoCollectionView.snp.makeConstraints { make in
make.top.equalTo(infoTitleLabel.snp.bottom)
make.left.right.equalToSuperview()
make.bottom.equalTo(bottomLineView.snp.top)
}
}
}
extension YHHKRecordsStayingPersonnelCell: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return collectionData.count > 0 ? 1 : 0
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return collectionData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if collectionData.count > indexPath.item, let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHHKRecordsPersonnelSelectCell.cellReuseIdentifier, for: indexPath) as? YHHKRecordsPersonnelSelectCell {
let data = collectionData[indexPath.item]
cell.setupCellInfo(data)
return cell
}
return UICollectionViewCell()
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if collectionData.count > indexPath.item {
let data = collectionData[indexPath.item]
let attrString = NSAttributedString(string: data, attributes: [.font: YHHKRecordsPersonnelSelectCell.labelFont])
var width = attrString.yh_width(containerHeight: YHHKRecordsPersonnelSelectCell.cellHeight) + 2 * YHHKRecordsPersonnelSelectCell.offsetX
if width < minWidth {
width = minWidth
}
if width > maxWidth {
width = maxWidth
}
return CGSize(width: width, height: YHHKRecordsPersonnelSelectCell.cellHeight)
}
return CGSize.zero
}
func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
if collectionData.count > indexPath.item, let cell = collectionView.cellForItem(at: indexPath) as? YHHKRecordsPersonnelSelectCell {
if cell.isSelected {
collectionView.deselectItem(at: indexPath, animated: true)
selectItemAction?(nil)
return false
}
return true
}
return true
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if collectionData.count > indexPath.item, let cell = collectionView.cellForItem(at: indexPath) as? YHHKRecordsPersonnelSelectCell {
let data = collectionData[indexPath.item]
selectItemAction?(cell.isSelected ? data : nil)
}
}
}
......@@ -14,7 +14,7 @@ class YHHKRecordsSummaryItemCell: YHHKRecordsSectionItemBaseCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor
return label
}()
......
//
// YHHKRecordsTimeSelectCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsTimeSelectCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsTimeSelectCell"
private lazy var asteriskIcon: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "asterisk_icon_6")
return view
}()
private lazy var arrowIcon: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "right_arrow_black_20")
return view
}()
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = UIColor(hexString: "#222222")
return label
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor
label.font = .PFSC_M(ofSize: 14)
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
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: String?) {
infoTitleLabel.text = title
infoDetailLabel.text = detail
}
}
extension YHHKRecordsTimeSelectCell {
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(asteriskIcon)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel)
subContainerView.addSubview(arrowIcon)
subContainerView.addSubview(bottomLineView)
infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
asteriskIcon.setContentCompressionResistancePriority(.required, for: .horizontal)
arrowIcon.setContentCompressionResistancePriority(.required, for: .horizontal)
asteriskIcon.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.centerY.equalToSuperview()
make.width.height.equalTo(6)
}
arrowIcon.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.right.equalToSuperview().offset(-18)
make.width.height.equalTo(20)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(asteriskIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-16)
}
infoDetailLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.centerX.equalToSuperview().priority(.high)
make.left.greaterThanOrEqualTo(infoTitleLabel.snp.right).offset(4).priority(.required)
}
bottomLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(1)
}
}
}
//
// YHHKRecordsTitleCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsTitleCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHHKRecordsHeaderCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 17)
label.textColor = .mainTextColor
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
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?) {
infoTitleLabel.text = title
}
}
extension YHHKRecordsTitleCell {
private func setupUI() {
updateCellCorner(.top)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(bottomLineView)
bottomLineView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-12)
}
}
}
......@@ -13,7 +13,7 @@ class YHResignDocumentContentCell: YHResignDocumentCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:14)
label.font = .PFSC_M(ofSize: 14)
label.textColor = .mainTextColor
return label
}()
......@@ -21,7 +21,7 @@ class YHResignDocumentContentCell: YHResignDocumentCell {
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor50
label.font = .PFSC_R(ofSize:14)
label.font = .PFSC_R(ofSize: 14)
return label
}()
......
......@@ -13,7 +13,7 @@ class YHResignDocumentHeaderCell: YHResignDocumentCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:17)
label.font = .PFSC_M(ofSize: 17)
label.textColor = .mainTextColor
return label
}()
......@@ -21,7 +21,7 @@ class YHResignDocumentHeaderCell: YHResignDocumentCell {
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor50
label.font = .PFSC_R(ofSize:13)
label.font = .PFSC_R(ofSize: 13)
return label
}()
......
......@@ -26,7 +26,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:17)
label.font = .PFSC_M(ofSize: 17)
label.textColor = UIColor(hexString: "#222222")
label.text = "文书稿件"
return label
......@@ -34,7 +34,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private lazy var infoStatusLabel: YHPaddedLabel = {
let label = YHPaddedLabel(padding: UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 4))
label.font = .PFSC_M(ofSize:10)
label.font = .PFSC_M(ofSize: 10)
label.layer.cornerRadius = 2
label.layer.masksToBounds = true
return label
......@@ -59,7 +59,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private lazy var fileNameLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString: "#222222")
label.font = .PFSC_M(ofSize:14)
label.font = .PFSC_M(ofSize: 14)
label.numberOfLines = 0
return label
}()
......@@ -79,7 +79,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
let button = UIButton(type: .custom)
button.isHidden = true
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize:14)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(leftButtonDidClick(_:)), for: .touchUpInside)
return button
}()
......@@ -88,7 +88,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
let button = UIButton(type: .custom)
button.isHidden = true
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize:14)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(midButtonDidClick(_:)), for: .touchUpInside)
return button
}()
......@@ -97,7 +97,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
let button = UIButton(type: .custom)
button.isHidden = true
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize:14)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(rightButtonDidClick(_:)), for: .touchUpInside)
return button
}()
......
......@@ -26,7 +26,7 @@ class YHResignDocumentTipsCell: YHResignDocumentCell {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:13)
label.font = .PFSC_M(ofSize: 13)
label.textColor = .brandMainColor
label.text = "填写指引"
return label
......@@ -35,7 +35,7 @@ class YHResignDocumentTipsCell: YHResignDocumentCell {
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor50
label.font = .PFSC_R(ofSize:12)
label.font = .PFSC_R(ofSize: 12)
label.numberOfLines = 0
return label
}()
......
......@@ -94,7 +94,6 @@ extension YHResignGuidelinesExampleShareViewController {
centerImageView = {
let view = UIImageView()
view.image = UIImage(named: centerImageName)
return view
}()
view.addSubview(centerImageView)
......@@ -126,6 +125,7 @@ extension YHResignGuidelinesExampleShareViewController {
make.center.equalToSuperview()
make.width.height.equalTo(21)
}
centerImageView.kf.setImage(with: URL(string: centerImageName))
let qrString = url
if let qrCode = qrString.generateQRCode() {
// 可以将qrCode设置为UIImageView的image属性来显示二维码
......
......@@ -7,6 +7,7 @@
//
import UIKit
import Kingfisher
enum YHResignGuidelinesExampleType: Int {
case house
......@@ -23,6 +24,9 @@ class YHResignGuidelinesExampleViewController: YHBaseViewController {
var type: YHResignGuidelinesExampleType = .house
// var viewModel = YHResignCertificateListViewModel()
var viewModel = YHResignGuidelinesViewModel()
var height: CGFloat = 0
var id = 3473
override func viewDidLoad() {
super.viewDidLoad()
gk_navTitle = "银河续签案例分享"
......@@ -37,21 +41,21 @@ class YHResignGuidelinesExampleViewController: YHBaseViewController {
}
func getData() {
if type == .house {
imageName = "resign_guidelines_example_house"
} else if type == .work {
imageName = "resign_guidelines_example_work"
} else if type == .taxation {
imageName = "resign_guidelines_example_taxation"
} else {
imageName = "resign_guidelines_example_nowork"
}
viewModel.getResignDetail(Id: 3473) {[weak self] success, error in
// if type == .house {
// imageName = "resign_guidelines_example_house"
// } else if type == .work {
// imageName = "resign_guidelines_example_work"
// } else if type == .taxation {
// imageName = "resign_guidelines_example_taxation"
// } else {
// imageName = "resign_guidelines_example_nowork"
// }
viewModel.getResignDetail(Id: id) {[weak self] success, error in
guard let self = self else { return }
self.imageName = self.viewModel.mainModel.content_url
self.getImageSizeFromURL(urlString: self.imageName)
}
tableView.reloadData()
}
func setView() {
......@@ -104,21 +108,41 @@ class YHResignGuidelinesExampleViewController: YHBaseViewController {
}
@objc func nextStep() {
var imageName = ""
if type == .house {
imageName = "resign_guidelines_example_house_share"
} else if type == .work {
imageName = "resign_guidelines_example_work_share"
} else if type == .taxation {
imageName = "resign_guidelines_example_taxation_share"
} else {
imageName = "resign_guidelines_example_nowork_share"
}
// var imageName = ""
// if type == .house {
// imageName = "resign_guidelines_example_house_share"
// } else if type == .work {
// imageName = "resign_guidelines_example_work_share"
// } else if type == .taxation {
// imageName = "resign_guidelines_example_taxation_share"
// } else {
// imageName = "resign_guidelines_example_nowork_share"
// }
let vc = YHResignGuidelinesExampleShareViewController()
vc.centerImageName = imageName
vc.centerImageName = self.viewModel.mainModel.share_url
vc.url = "https://baidu.com"
self.navigationController?.pushViewController(vc)
}
func getImageSizeFromURL(urlString: String) {
let imageURL = URL(string: urlString)!
// 使用Kingfisher的ImageDownloader下载图片数据
ImageDownloader.default.downloadImage(with: imageURL, options: [], progressBlock: nil) { (result) in
switch result {
case .success(let response):
// 使用UIImage初始化图片数据
let image = response.image
let size = image.size
let scale = size.width > 0 ? Double(size.height / size.width) : 0.0
// 获取图片的宽度和高度
self.height = KScreenWidth * scale
self.tableView.reloadData()
case .failure(let error):
print(error)
}
}
}
}
extension YHResignGuidelinesExampleViewController: UITableViewDelegate, UITableViewDataSource {
......@@ -133,15 +157,17 @@ extension YHResignGuidelinesExampleViewController: UITableViewDelegate, UITableV
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if type == .house {
return 986.fix
} else if type == .work {
return 925.fix
} else if type == .taxation {
return 946.fix
} else {
return 1069.fix
}
// if type == .house {
// return 986.fix
// } else if type == .work {
// return 925.fix
// } else if type == .taxation {
// return 946.fix
// } else {
// return 1069.fix
// }
return height
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......@@ -154,7 +180,7 @@ class YHResignGuidelinesExampleTableViewCell: UITableViewCell {
var bgImageView: UIImageView!
var imageName: String? {
didSet {
bgImageView.image = UIImage(named: imageName ?? "")
bgImageView.kf.setImage(with: URL(string: imageName))
}
}
override func awakeFromNib() {
......
......@@ -21,6 +21,8 @@ class YHResignGuidelinesModel: SmartCodable {
var is_finished_transcode: Int = 0
var img_url_compress: String = ""
var clue_classify_img_url: String = ""
var share_url: String = ""
var content_url: String = ""
required init() {
}
......
......@@ -18,10 +18,11 @@ class YHResignGuidelinesViewModel: YHBaseViewModel {
//1. json字符串 转 对象
guard self != nil else { return }
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let data = dic["data"] as? [String: Any], let result = YHResignGuidelinesModel.deserialize(from: data) else {
guard let dic = json.data?.peel as? [String : Any], let result = YHResignGuidelinesModel.deserialize(from: dic) else {
callBackBlock(false,nil)
return
}
self?.mainModel = result
callBackBlock(true, nil)
} else {
......
......@@ -100,3 +100,19 @@ extension NSMutableAttributedString {
}
}
extension NSAttributedString {
func yh_height(containerWidth: CGFloat) -> CGFloat {
let rect = boundingRect(with: CGSize(width: containerWidth, height: CGFloat.greatestFiniteMagnitude),
options: [.usesLineFragmentOrigin, .usesFontLeading],
context: nil)
return ceil(rect.size.height)
}
func yh_width(containerHeight: CGFloat) -> CGFloat {
let rect = boundingRect(with: CGSize(width: CGFloat.greatestFiniteMagnitude, height: containerHeight),
options: [.usesLineFragmentOrigin, .usesFontLeading],
context: nil)
return ceil(rect.size.width)
}
}
......@@ -90,4 +90,24 @@ extension UIView {
return layer
}
@discardableResult
public func createRoundedCornersAndBorder(corners: UIRectCorner, radii: CGSize, lineWidth: CGFloat?, lineColor: CGColor?) -> [CAShapeLayer] {
var shapeLayers: [CAShapeLayer] = []
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: radii)
let shape = CAShapeLayer()
shape.path = path.cgPath
layer.mask = shape
shapeLayers.append(shape)
if let lineWidth = lineWidth, let lineColor = lineColor {
let bordLayer = CAShapeLayer()
bordLayer.lineWidth = lineWidth
bordLayer.strokeColor = lineColor
bordLayer.fillColor = UIColor.clear.cgColor
bordLayer.path = path.cgPath
layer.insertSublayer(bordLayer, at: 0)
shapeLayers.append(bordLayer)
}
return shapeLayers
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "asterisk_icon_6@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "asterisk_icon_6@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "personnel_selected_badge@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "personnel_selected_badge@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "right_arrow_black_20@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "right_arrow_black_20@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