Kurdtvs-Live-Kurdish-TV-Kur.../MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift

91 lines
3.3 KiB
Swift

//
// SpoilerOverlayView.swift
//
//
// Created by MainasuK on 2022-1-29.
//
import UIKit
import MastodonLocalization
import MastodonAsset
import MetaTextKit
final class SpoilerOverlayView: UIView {
let containerStackView: UIStackView = {
let stackView = UIStackView()
stackView.axis = .vertical
// stackView.spacing = 8
stackView.alignment = .center
return stackView
}()
let iconImageView: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(systemName: "eye", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 34, weight: .light)))
imageView.tintColor = Asset.Colors.Label.secondary.color
return imageView
}()
let titleLabel: UILabel = {
let label = UILabel()
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold))
label.textAlignment = .center
label.textColor = Asset.Colors.Label.primary.color
label.text = L10n.Common.Controls.Status.contentWarning
return label
}()
let spoilerMetaLabel = MetaLabel(style: .statusSpoiler)
override init(frame: CGRect) {
super.init(frame: frame)
_init()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
_init()
}
}
extension SpoilerOverlayView {
private func _init() {
containerStackView.translatesAutoresizingMaskIntoConstraints = false
addSubview(containerStackView)
NSLayoutConstraint.activate([
containerStackView.topAnchor.constraint(equalTo: topAnchor),
containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor),
containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor),
containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor),
])
let topPaddingView = UIView()
topPaddingView.translatesAutoresizingMaskIntoConstraints = false
containerStackView.addArrangedSubview(topPaddingView)
iconImageView.translatesAutoresizingMaskIntoConstraints = false
containerStackView.addArrangedSubview(iconImageView)
NSLayoutConstraint.activate([
iconImageView.widthAnchor.constraint(equalToConstant: 52.0).priority(.required - 1),
iconImageView.heightAnchor.constraint(equalToConstant: 32.0).priority(.required - 1),
])
iconImageView.setContentCompressionResistancePriority(.required, for: .vertical)
containerStackView.addArrangedSubview(titleLabel)
containerStackView.addArrangedSubview(spoilerMetaLabel)
let bottomPaddingView = UIView()
bottomPaddingView.translatesAutoresizingMaskIntoConstraints = false
containerStackView.addArrangedSubview(bottomPaddingView)
NSLayoutConstraint.activate([
topPaddingView.heightAnchor.constraint(equalTo: bottomPaddingView.heightAnchor).priority(.required - 1),
])
topPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical)
bottomPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical)
}
public func setComponentHidden(_ isHidden: Bool) {
containerStackView.arrangedSubviews.forEach { $0.isHidden = isHidden }
}
}