ThimraTV/MoviaBox/Base/View/SPApnsAlertView.swift
2025-06-17 09:40:35 +08:00

164 lines
4.9 KiB
Swift

//
// SPApnsAlertView.swift
// MoviaBox
//
// Created by on 2025/5/9.
//
import UIKit
class SPApnsAlertView: UIView {
//MARK: UI
private lazy var contentView: UIView = {
let view = UIView()
return view
}()
private lazy var bgView: UIView = {
let imageView = UIImageView(image: UIImage(named: "alert_bg_image_01"))
imageView.isUserInteractionEnabled = true
return imageView
}()
private lazy var iconImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "message_icon_01"))
return imageView
}()
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = .fontMedium(ofSize: 20)
label.textColor = .colorFFFFFF()
label.text = "movia_open_notification".localized
label.textAlignment = .center
label.numberOfLines = 0
return label
}()
private lazy var textLabel: UILabel = {
let label = UILabel()
label.textColor = .colorA8B8C3()
label.font = .fontRegular(ofSize: 14)
label.text = "movia_open_notification_info".localized
label.textAlignment = .center
label.numberOfLines = 0
return label
}()
private lazy var laterButton: UIButton = {
let button = UIButton(type: .custom)
button.setTitle("movia_open_notification_later".localized, for: .normal)
button.titleLabel?.font = .fontMedium(ofSize: 16)
button.setTitleColor(.colorFF3232(), for: .normal)
button.addTarget(self, action: #selector(handleLaterButton), for: .touchUpInside)
return button
}()
private lazy var allowButton: UIButton = {
let button = UIButton(type: .custom)
button.setTitle("movia_allow".localized, for: .normal)
button.titleLabel?.font = .fontMedium(ofSize: 16)
button.setTitleColor(.colorFFFFFF(), for: .normal)
button.layer.cornerRadius = 21
button.layer.masksToBounds = true
button.backgroundColor = .colorFF3232()
button.addTarget(self, action: #selector(handleAllowButton), for: .touchUpInside)
return button
}()
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .color000000(alpha: 0.8)
_setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func show() {
guard let view = SPAPPTool.getKeyWindow() else { return }
view.addSubview(self)
self.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
@objc private func handleLaterButton() {
self.removeFromSuperview()
AppDelegate.haveBeenShownAPNS = true
SPAPPTool.sceneDelegate?.retryHandleOpenAppMessage()
}
@objc private func handleAllowButton() {
AppDelegate.haveBeenShownAPNS = true
self.removeFromSuperview()
SPAPPTool.openApnsSetting()
}
}
extension SPApnsAlertView {
private func _setupUI() {
addSubview(contentView)
contentView.addSubview(bgView)
bgView.addSubview(iconImageView)
bgView.addSubview(titleLabel)
bgView.addSubview(textLabel)
bgView.addSubview(laterButton)
bgView.addSubview(allowButton)
contentView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(26)
}
bgView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
// make.height.equalTo(284)
make.bottom.equalToSuperview()
}
iconImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(9)
}
titleLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(iconImageView.snp.bottom).offset(15)
make.right.lessThanOrEqualToSuperview().offset(-30)
}
textLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(titleLabel.snp.bottom).offset(19)
make.right.lessThanOrEqualToSuperview().offset(-30)
}
laterButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(33)
make.top.equalTo(textLabel.snp.bottom).offset(28)
make.height.equalTo(42)
}
allowButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-33)
make.left.equalTo(laterButton.snp.right).offset(13)
make.width.height.top.equalTo(laterButton)
make.bottom.equalToSuperview().offset(-32)
}
}
}