TSSaveSuccessTool.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // TSSaveSuccessTool.swift
  3. // Pods
  4. //
  5. // Created by 100Years on 2025/4/24.
  6. //
  7. public let kSaveSuccesswShared = TSSaveSuccessTool.shared
  8. open class TSSaveSuccessTool {
  9. static let shared = TSSaveSuccessTool()
  10. public var clickViewHandle:(()->Void)?
  11. private lazy var textLabel:UILabel = {
  12. let textLabel = UILabel()
  13. textLabel.textColor = UIColor.white
  14. textLabel.text = "Save Successfully".localized
  15. textLabel.font = UIFont.font(size: 14)
  16. return textLabel
  17. }()
  18. private lazy var saveSuccessBg: UIView = {
  19. return creatSaveSuccessBg()
  20. }()
  21. private lazy var viewButton:UIView = {
  22. let color = "4FEA9D".uiColor
  23. let viewButton = UIButton.createButton(title: "View".localized ,backgroundColor: color.withAlphaComponent(0.1),font: UIFont.font(size: 12),titleColor: color,corner: 14) { [weak self] in
  24. guard let self = self else { return }
  25. if let clickViewHandle = clickViewHandle {
  26. clickViewHandle()
  27. }else {
  28. if let url = URL(string: "photos-redirect://") {
  29. if UIApplication.shared.canOpenURL(url) {
  30. UIApplication.shared.open(url, options: [:], completionHandler: nil)
  31. playVibration()
  32. }
  33. }
  34. }
  35. }
  36. viewButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
  37. return viewButton
  38. }()
  39. func creatSaveSuccessBg() -> UIView {
  40. let view = UIView()
  41. view.frame = CGRect(x: 0, y: 0, width: 288, height: 48)
  42. // 阴影
  43. view.backgroundColor = .clear
  44. view.layer.shadowColor = UIColor.black.cgColor
  45. view.layer.shadowOffset = CGSize(width: 0, height: 2)
  46. view.layer.shadowOpacity = 0.1
  47. // 圆角
  48. let colorBg = UIView()
  49. colorBg.backgroundColor = "#333333".uiColor
  50. colorBg.layer.cornerRadius = 8
  51. colorBg.layer.masksToBounds = true
  52. colorBg.clipsToBounds = true
  53. view.addSubview(colorBg)
  54. colorBg.snp.makeConstraints { make in
  55. make.leading.trailing.top.bottom.equalTo(0)
  56. }
  57. let image = UIImage(named: "success_icon")
  58. let iconView = UIImageView(image: image)
  59. view.addSubview(iconView)
  60. iconView.snp.makeConstraints { make in
  61. make.width.height.equalTo(24)
  62. make.centerY.equalToSuperview()
  63. make.leading.equalTo(12)
  64. }
  65. view.addSubview(viewButton)
  66. view.addSubview(textLabel)
  67. viewButton.snp.makeConstraints { make in
  68. make.width.equalTo(viewButton.intrinsicContentSize.width)
  69. make.height.equalTo(28)
  70. make.trailing.equalTo(-8)
  71. make.centerY.equalToSuperview()
  72. }
  73. textLabel.snp.makeConstraints { make in
  74. make.leading.equalTo(iconView.snp.trailing).offset(8)
  75. make.trailing.equalTo(viewButton.snp.leading).offset(-8)
  76. make.centerY.equalToSuperview()
  77. }
  78. return view
  79. }
  80. public func getBottom(topY:CGFloat)->CGFloat{
  81. let bottom = -(k_ScreenHeight - 48 - topY)
  82. debugPrint("bottom=\(bottom)")
  83. return bottom
  84. }
  85. public func show(atView:UIView,text:String = "Save Successfully".localized,deadline:Double = 2.0,bottom:CGFloat = -112,showViewBtn:Bool = true,clickViewHandle:(()->Void)? = nil) {
  86. self.clickViewHandle = clickViewHandle
  87. kExecuteOnMainThread {
  88. self.textLabel.text = text
  89. self.viewButton.isHidden = !showViewBtn
  90. atView.addSubview(self.saveSuccessBg)
  91. self.saveSuccessBg.snp.remakeConstraints { make in
  92. make.width.greaterThanOrEqualTo(288)
  93. make.width.lessThanOrEqualTo(k_ScreenWidth-32)
  94. make.height.equalTo(48)
  95. make.centerX.equalToSuperview()
  96. make.bottom.equalTo(bottom)
  97. }
  98. }
  99. DispatchQueue.main.asyncAfter(deadline: .now() + deadline) {
  100. self.saveSuccessBg.removeFromSuperview()
  101. }
  102. }
  103. }