mastodon-app-ufficiale-ipho.../MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift

95 lines
3.3 KiB
Swift

//
// SpoilerBannerView.swift
//
//
// Created by MainasuK on 2022-2-8.
//
import UIKit
import MetaTextKit
import MastodonAsset
import MastodonLocalization
public final class SpoilerBannerView: UIView {
static let cornerRadius: CGFloat = 8
static let containerMargin: CGFloat = 14
public let containerView = UIView()
public let label = MetaLabel(style: .statusSpoilerBanner)
public let hideLabel: UILabel = {
let label = UILabel()
label.textColor = Asset.Colors.Label.primary.color
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular))
label.text = L10n.Common.Controls.Status.Actions.hide
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
_init()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
_init()
}
}
extension SpoilerBannerView {
private func _init() {
containerView.translatesAutoresizingMaskIntoConstraints = false
addSubview(containerView)
NSLayoutConstraint.activate([
containerView.topAnchor.constraint(equalTo: topAnchor),
containerView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
containerView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor),
containerView.bottomAnchor.constraint(equalTo: bottomAnchor),
])
containerView.backgroundColor = .secondarySystemBackground
containerView.layoutMargins = UIEdgeInsets(
top: StatusVisibilityView.containerMargin,
left: StatusVisibilityView.containerMargin,
bottom: StatusVisibilityView.containerMargin,
right: StatusVisibilityView.containerMargin
)
let labelContainer = UIStackView()
labelContainer.axis = .horizontal
labelContainer.spacing = 16
labelContainer.alignment = .center
labelContainer.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(labelContainer)
NSLayoutConstraint.activate([
labelContainer.topAnchor.constraint(equalTo: containerView.layoutMarginsGuide.topAnchor),
labelContainer.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor),
labelContainer.trailingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.trailingAnchor),
labelContainer.bottomAnchor.constraint(equalTo: containerView.layoutMarginsGuide.bottomAnchor),
])
labelContainer.addArrangedSubview(label)
labelContainer.addArrangedSubview(UIView())
labelContainer.addArrangedSubview(hideLabel)
hideLabel.setContentHuggingPriority(.required - 1, for: .horizontal)
hideLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal)
label.isUserInteractionEnabled = false
}
public override func layoutSubviews() {
super.layoutSubviews()
containerView.layer.masksToBounds = false
containerView.layer.cornerCurve = .continuous
containerView.layer.cornerRadius = StatusVisibilityView.cornerRadius
}
}