// // CheckPermissionVC.swift // QuickLocation // // Created by 八条 on 2026/6/12. // import UIKit import RxSwift import RxCocoa class CheckPermissionVC: BaseViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. setupUI() backBtn.rx.tap.subscribe(onNext: { _ in AppRouter.shared.popOrDismiss() }).disposed(by: disposeBag) tipsLab.rx.tapGesture.subscribe { _ in AppRouter.push(Route.web, userInfo: ["url": URLManager.shared.privacyPolicyUrl]) }.disposed(by: disposeBag) settingBtn.rx.tap.subscribe(onNext: { _ in guard let settingsURL = URL(string: UIApplication.openSettingsURLString) else { return } if UIApplication.shared.canOpenURL(settingsURL) { UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil) } }).disposed(by: disposeBag) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let manager = AuthorizeManager.manager(type: .locationAlways) settingBtn.isEnabled = manager?.authorizeStatus() != .authorized } private func setupUI() { view.addSubview(navBgView) view.addSubview(navBarView) navBarView.addSubview(navTitleLabel) navBarView.addSubview(backBtn) view.addSubview(scrollView) scrollView.addSubview(scrollContentView) scrollContentView.addSubview(stepImgView) view.addSubview(tipsLab) view.addSubview(settingBtn) navBgView.layoutChain .edges(excludingEdge: .bottom) .height(kNaviHeight) navBarView.layoutChain .edges(excludingEdge: .bottom) .height(kNaviHeight) navTitleLabel.layoutChain .top(kStatusBarHeight + 12) .centerX() backBtn.layoutChain .centerY(navTitleLabel) .left(15) .width(24) .height(24) settingBtn.layoutChain .edgesHorzontal(30) .bottom(kSafeBottomMargin + 30) .height(50) tipsLab.layoutChain .edgesHorzontal(31) .bottomToTopOfView(settingBtn, offset: -20) scrollView.layoutChain .topToBottomOfView(navBarView, offset: 15) .edgesHorzontal() .bottomToTopOfView(tipsLab, offset: -10) scrollContentView.layoutChain .edges() .widthToView(scrollView) stepImgView.layoutChain .top() .edgesHorzontal(20) .bottom() .heightToWidth(531/335) } lazy var navBgView: UIImageView = { let iv = UIImageView() iv.image = UIImage(named: "Common/navBar_bg_2") iv.contentMode = .scaleAspectFill return iv }() lazy var navBarView: UIView = { let view = UIView() view.backgroundColor = .clear return view }() lazy var navTitleLabel: UILabel = { let label = UILabel() label.text = "权限检测" label.font = .systemFont(ofSize: 18, weight: .medium) label.textColor = ThemeManager.shared.color.titleAuxColor label.textAlignment = .center return label }() lazy var backBtn: UIButton = { let btn = UIButton(type: .custom) btn.setImage(UIImage(named: "Common/back"), for: .normal) btn.extendEdgeInsets = UIEdgeInsets(top: 54, left: 15, bottom: 100, right: 100) return btn }() lazy var scrollView: UIScrollView = { let view = UIScrollView() view.backgroundColor = .clear return view }() lazy var scrollContentView: UIView = { let view = UIView() view.backgroundColor = .clear return view }() lazy var stepImgView: UIImageView = { let view = UIImageView(image: UIImage(named: "CheckPermission/permission")) view.contentMode = .scaleAspectFill return view }() lazy var tipsLab: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 10, weight: .regular) label.textColor = UIColor(hexStr: "#333333") label.textAlignment = .center label.numberOfLines = 0 label.isUserInteractionEnabled = true let text = "根据我们的隐私政策和用户设置,您的位置数据也将与第三方共享,用于研究、定制广告和分析目的。" let attr = NSMutableAttributedString(string: text) let range = (text as NSString).range(of: "隐私政策") attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#16B3FF"), range: range) label.attributedText = attr return label }() lazy var settingBtn: UIButton = { let btn = UIButton(type: .custom) btn.setTitle("去设置", for: .normal) btn.setTitle("已设置", for: .disabled) btn.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium) btn.setTitleColor(.white, for: .normal) btn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) btn.cornerRadius = 25 return btn }() }