import UIKit import Shared final class ScanQRButton: UIControl { private let overlayView = UIView() private let copiedLabel = UILabel() private(set) var imageView = UIImageView() init() { super.init(frame: .zero) clipsToBounds = true overlayView.alpha = 0.0 layer.cornerRadius = 30 backgroundColor = Asset.neutralWhite.color overlayView.backgroundColor = Asset.brandDefault.color.withAlphaComponent(0.9) copiedLabel.text = Localized.Scan.Display.copied copiedLabel.textColor = Asset.neutralWhite.color copiedLabel.font = Fonts.Mulish.semiBold.font(size: 18.0) addSubview(imageView) addSubview(overlayView) overlayView.addSubview(copiedLabel) copiedLabel.snp.makeConstraints { $0.center.equalToSuperview() } imageView.snp.makeConstraints { $0.top.equalToSuperview().offset(20) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) $0.bottom.equalToSuperview().offset(-20) } overlayView.snp.makeConstraints { $0.edges.equalToSuperview() } } required init?(coder: NSCoder) { nil } func setup(code image: CIImage) { imageView.image = UIImage(ciImage: image) } func blinkCopied() { UIView.animateKeyframes(withDuration: 1.0, delay: 0) { UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.1) { self.overlayView.alpha = 1.0 } UIView.addKeyframe(withRelativeStartTime: 0.8, relativeDuration: 0.2) { self.overlayView.alpha = 0.0 } } } }