89 lines
3.2 KiB
Swift
89 lines
3.2 KiB
Swift
//
|
|
// FeedbackSuccessView.swift
|
|
// QuickLocation
|
|
//
|
|
|
|
import UIKit
|
|
|
|
final class FeedbackSuccessView: UIView {
|
|
|
|
private let cardView = UIView()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
setupUI()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
private func setupUI() {
|
|
backgroundColor = UIColor.black.withAlphaComponent(0.66)
|
|
|
|
let pointerView = UIView()
|
|
pointerView.backgroundColor = .white
|
|
pointerView.transform = CGAffineTransform(rotationAngle: .pi / 4)
|
|
addSubview(pointerView)
|
|
pointerView.layoutChain.centerX().centerY(self, offset: 94).width(28).height(28)
|
|
|
|
cardView.backgroundColor = .white
|
|
cardView.layer.cornerRadius = 36
|
|
addSubview(cardView)
|
|
cardView.layoutChain.centerX().centerY(self, offset: -8).width(280).height(208)
|
|
|
|
let headerImageView = UIImageView(image: UIImage(named: "Mine/feedback_success_header"))
|
|
headerImageView.contentMode = .scaleToFill
|
|
headerImageView.layer.cornerRadius = 36
|
|
headerImageView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
|
|
headerImageView.clipsToBounds = true
|
|
cardView.addSubview(headerImageView)
|
|
headerImageView.layoutChain.top().left().right().height(100)
|
|
|
|
let iconView = UIImageView(image: UIImage(named: "Mine/feedback_success_icon"))
|
|
iconView.contentMode = .scaleAspectFit
|
|
cardView.addSubview(iconView)
|
|
iconView.layoutChain.top(-60).centerX().width(120).height(120)
|
|
|
|
let titleLabel = UILabel()
|
|
titleLabel.text = "反馈提交成功"
|
|
titleLabel.font = .systemFont(ofSize: 24, weight: .semibold)
|
|
titleLabel.textColor = UIColor(hexStr: "#1D1D1D")
|
|
titleLabel.textAlignment = .center
|
|
cardView.addSubview(titleLabel)
|
|
titleLabel.layoutChain.top(78).left(16).right(16)
|
|
|
|
let detailLabel = UILabel()
|
|
detailLabel.text = "感谢您的反馈,我们会及时查看并妥\n善处理相关问题"
|
|
detailLabel.font = .systemFont(ofSize: 15, weight: .medium)
|
|
detailLabel.textColor = UIColor(hexStr: "#767676")
|
|
detailLabel.textAlignment = .center
|
|
detailLabel.numberOfLines = 2
|
|
detailLabel.lineBreakMode = .byWordWrapping
|
|
cardView.addSubview(detailLabel)
|
|
detailLabel.layoutChain.topToBottomOfView(titleLabel, offset: 22).left(24).right(24)
|
|
}
|
|
|
|
func show(in superview: UIView) {
|
|
frame = superview.bounds
|
|
autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
|
alpha = 0
|
|
cardView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
|
|
superview.addSubview(self)
|
|
UIView.animate(withDuration: 0.24, delay: 0, options: .curveEaseOut) {
|
|
self.alpha = 1
|
|
self.cardView.transform = .identity
|
|
}
|
|
}
|
|
|
|
func dismiss(completion: @escaping () -> Void) {
|
|
UIView.animate(withDuration: 0.2, animations: {
|
|
self.alpha = 0
|
|
self.cardView.transform = CGAffineTransform(scaleX: 0.96, y: 0.96)
|
|
}, completion: { _ in
|
|
self.removeFromSuperview()
|
|
completion()
|
|
})
|
|
}
|
|
}
|