jsdw_ios/QuickLocation/Section/Mine/Feedback/FeedbackSuccessView.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()
})
}
}