TSMineVC.swift 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. //
  2. // TSSetingVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. class TSMineVC: TSBaseVC {
  8. lazy var navBarView: TSBaseNavContentBarView = {
  9. let navBarView = TSBaseNavContentBarView()
  10. let titleImageView = UIImageView.createImageView(imageName: "nav_title_setting", contentMode: .scaleToFill)
  11. navBarView.barView.addSubview(titleImageView)
  12. titleImageView.snp.makeConstraints { make in
  13. make.centerY.equalToSuperview()
  14. make.left.equalTo(16)
  15. }
  16. return navBarView
  17. }()
  18. lazy var vipBgImageView: UIImageView = {
  19. let vipBgImageView = UIImageView.createImageView(imageName: "noVip_big_bg", contentMode: .scaleToFill)
  20. vipBgImageView.isUserInteractionEnabled = true
  21. return vipBgImageView
  22. }()
  23. lazy var vipTimeLabel: UILabel = {
  24. let vipTimeLabel = UILabel.createLabel(text: "Limited Time Discount", font: .font(size: 14), textColor: .lesserText)
  25. return vipTimeLabel
  26. }()
  27. lazy var upgradeBtn: UIButton = {
  28. let upgradeBtn = TSViewTool.createNormalSubmitBtn(title: "Upgrade".localized) { [weak self] in
  29. guard let self = self else { return }
  30. TSPurchaseVC.show(target: self) { [weak self] in
  31. guard let self = self else { return }
  32. updateVipView()
  33. }
  34. }
  35. upgradeBtn.cornerRadius = 13
  36. upgradeBtn.titleLabel?.font = .font(size: 14)
  37. return upgradeBtn
  38. }()
  39. lazy var headerView: UIView = {
  40. let headerView = UIView()
  41. headerView.frame = CGRect(x: 0, y: 0, width: k_ScreenWidth, height: 88)
  42. headerView.addSubview(vipBgImageView)
  43. vipBgImageView.snp.makeConstraints { make in
  44. make.top.equalTo(0)
  45. make.leading.trailing.bottom.equalTo(0)
  46. }
  47. let liveImageView = UIImageView.createImageView(imageName: "Cloud_Music_Pro")
  48. vipBgImageView.addSubview(liveImageView)
  49. liveImageView.snp.makeConstraints { make in
  50. make.leading.equalTo(16)
  51. make.top.equalTo(19)
  52. }
  53. vipBgImageView.addSubview(vipTimeLabel)
  54. vipTimeLabel.snp.makeConstraints { make in
  55. make.leading.equalTo(16)
  56. make.bottom.equalTo(-19)
  57. make.height.equalTo(14.0)
  58. }
  59. vipBgImageView.addSubview(upgradeBtn)
  60. upgradeBtn.snp.makeConstraints { make in
  61. make.width.equalTo(86)
  62. make.height.equalTo(26)
  63. make.trailing.equalTo(-29)
  64. make.centerY.equalToSuperview()
  65. }
  66. return headerView
  67. }()
  68. lazy var simpleTableView: TSSimpleTableView = {
  69. let simpleTableView = TSSimpleTableView()
  70. simpleTableView.reuseClass = ["TSMineCell"]
  71. simpleTableView.dataArray = dataArray
  72. simpleTableView.tableView.tableHeaderView = headerView
  73. return simpleTableView
  74. }()
  75. lazy var dataArray: [TSBasicSectionModel] = {
  76. var dataArray = [TSBasicSectionModel]()
  77. let sectionModel = TSBasicSectionModel()
  78. dataArray.append(sectionModel)
  79. sectionModel.addSubItemModel(
  80. TSBasicItemModel.createItemModel(
  81. leftTitle: "Update".localized,
  82. rightViewStyle: 0,
  83. rightString: "",
  84. rightIsHave: true,
  85. height: 80,
  86. rectCorner: .allCorners,
  87. tapBlock: { [weak self] _, _, _ in
  88. let httpAppStoreLink = "https://apps.apple.com/app/id\(TSConfig.appid)"
  89. guard let appStoreURL = URL(string: httpAppStoreLink) else { return }
  90. if UIApplication.shared.canOpenURL(appStoreURL) {
  91. UIApplication.shared.open(appStoreURL, options: [:], completionHandler: nil)
  92. }
  93. }))
  94. sectionModel.addSubItemModel(
  95. TSBasicItemModel.createItemModel(
  96. leftTitle: "Rate us".localized,
  97. rightViewStyle: 0,
  98. rightString: "",
  99. rightIsHave: true,
  100. height: 80,
  101. rectCorner: .allCorners,
  102. tapBlock: { [weak self] _, _, _ in
  103. guard let self = self else { return }
  104. let appStoreLink = "itms-apps://itunes.apple.com/app/id\(TSConfig.appid)"
  105. if let url = URL(string: appStoreLink + "?action=write-review"),
  106. UIApplication.shared.canOpenURL(url) {
  107. UIApplication.shared.open(url)
  108. }
  109. }))
  110. sectionModel.addSubItemModel(
  111. TSBasicItemModel.createItemModel(
  112. leftTitle: "Share us".localized,
  113. rightViewStyle: 0,
  114. rightString: "",
  115. rightIsHave: true,
  116. height: 80,
  117. rectCorner: .allCorners,
  118. tapBlock: { [weak self] _, _, _ in
  119. guard let self = self else { return }
  120. let httpAppStoreLink = "https://apps.apple.com/app/id\(TSConfig.appid)"
  121. let text = ""
  122. let url = URL(string: httpAppStoreLink)!
  123. let image = UIImage(named: "App-Icon")!
  124. let vc = UIActivityViewController(activityItems: [image, text, url], applicationActivities: nil)
  125. vc.completionWithItemsHandler = { activity, _, _, _ in
  126. if let type = activity, type == .copyToPasteboard {
  127. UIPasteboard.general.string = httpAppStoreLink
  128. }
  129. }
  130. if UIDevice.isPad {
  131. if let popover = vc.popoverPresentationController {
  132. popover.sourceView = self.view // 设置锚点视图
  133. popover.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0) // 设置弹窗位置为屏幕中心
  134. popover.permittedArrowDirections = [] // 禁止箭头指向
  135. }
  136. }
  137. self.present(vc, animated: true)
  138. }))
  139. sectionModel.addSubItemModel(
  140. TSBasicItemModel.createItemModel(
  141. leftTitle: "Privacy Policy".localized,
  142. rightViewStyle: 0,
  143. rightString: "",
  144. rightIsHave: true,
  145. height: 80,
  146. rectCorner: .allCorners,
  147. tapBlock: { [weak self] _, _, _ in
  148. guard let self = self else { return }
  149. let vc = TSBusinessWebVC(urlType: .privacy)
  150. vc.hidesBottomBarWhenPushed = true
  151. navigationController?.pushViewController(vc, animated: true)
  152. }))
  153. sectionModel.addSubItemModel(
  154. TSBasicItemModel.createItemModel(
  155. leftTitle: "Terms of Service".localized,
  156. rightViewStyle: 0,
  157. rightString: "",
  158. rightIsHave: true,
  159. height: 80,
  160. rectCorner: .allCorners,
  161. tapBlock: { [weak self] _, _, _ in
  162. guard let self = self else { return }
  163. let vc = TSBusinessWebVC(urlType: .terms)
  164. vc.hidesBottomBarWhenPushed = true
  165. navigationController?.pushViewController(vc, animated: true)
  166. }))
  167. sectionModel.addSubItemModel(
  168. TSBasicItemModel.createItemModel(
  169. leftTitle: "About us".localized,
  170. rightViewStyle: 0,
  171. rightString: appVersion(),
  172. rightIsHave: false,
  173. height: 80,
  174. rectCorner: .allCorners,
  175. tapBlock: { [weak self] _, _, _ in
  176. guard let self = self else { return }
  177. #if DEBUG
  178. let vc = TSPurchaseVC()
  179. vc.hidesBottomBarWhenPushed = true
  180. kPresentModalVC(target: self, modelVC: vc)
  181. #endif
  182. }))
  183. return dataArray
  184. }()
  185. override func createView() {
  186. setViewBgImageNamed(named: "view_main_bg")
  187. navBarContentView.addSubview(navBarView)
  188. navBarView.snp.makeConstraints { make in
  189. make.edges.equalToSuperview()
  190. }
  191. contentView.addSubview(simpleTableView.tableView)
  192. simpleTableView.tableView.snp.makeConstraints { make in
  193. make.leading.equalTo(16)
  194. make.trailing.equalTo(-16)
  195. make.top.equalTo(16)
  196. make.bottom.equalTo(0)
  197. }
  198. }
  199. override func viewWillAppear(_ animated: Bool) {
  200. updateVipView()
  201. }
  202. func updateVipView() {
  203. vipTimeLabel.text = PurchaseManager.default.expiredDateString
  204. vipBgImageView.image = UIImage(named: PurchaseManager.default.isVip ? "vip_big_bg" : "noVip_big_bg")
  205. if PurchaseManager.default.isVip {
  206. vipTimeLabel.text = "Due Date: \(PurchaseManager.default.expiredDateString)"
  207. vipBgImageView.image = UIImage(named: "vip_big_bg")
  208. upgradeBtn.isHidden = true
  209. } else {
  210. vipTimeLabel.text = "Limited Time Discount"
  211. vipBgImageView.image = UIImage(named: "noVip_big_bg")
  212. upgradeBtn.isHidden = false
  213. }
  214. }
  215. }