Files
suixinkan_uikit/suixinkan/UI/Orders/Views/OrderHistoricalPhotosView.swift

110 lines
3.7 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// OrderHistoricalPhotosView.swift
// suixinkan
//
import SnapKit
import UIKit
/// Android multi_travel
final class OrderHistoricalPhotosView: UIView {
var onTap: (() -> Void)?
private let titleLabel = UILabel()
private let divider = UIView()
private let photosStack = UIStackView()
private var imageViews: [UIImageView] = []
private var overlayLabel: UILabel?
override init(frame: CGRect) {
super.init(frame: frame)
divider.backgroundColor = OrderTokens.remarkDivider
titleLabel.text = "历史拍摄信息:"
titleLabel.font = .app(.body)
titleLabel.textColor = OrderTokens.label563
photosStack.axis = .horizontal
photosStack.spacing = AppSpacing.xs
photosStack.distribution = .fillEqually
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
addGestureRecognizer(tap)
addSubview(divider)
addSubview(titleLabel)
addSubview(photosStack)
divider.snp.makeConstraints { make in
make.top.leading.trailing.equalToSuperview()
make.height.equalTo(1)
}
titleLabel.snp.makeConstraints { make in
make.top.equalTo(divider.snp.bottom).offset(AppSpacing.sm)
make.leading.trailing.equalToSuperview()
}
photosStack.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(AppSpacing.xs)
make.leading.trailing.bottom.equalToSuperview()
make.height.equalTo(72)
}
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func apply(materials: [MultiTravelMaterialEntity]) {
isHidden = materials.isEmpty
photosStack.arrangedSubviews.forEach { $0.removeFromSuperview() }
imageViews.removeAll()
overlayLabel?.removeFromSuperview()
overlayLabel = nil
let displayItems = Array(materials.prefix(3))
for (index, material) in displayItems.enumerated() {
let container = UIView()
container.backgroundColor = OrderTokens.filterBackground
container.layer.cornerRadius = AppRadius.sm
container.clipsToBounds = true
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
let thumbURL = material.coverUrl.isEmpty ? material.fileUrl : material.coverUrl
imageView.loadRemoteImage(urlString: thumbURL, placeholderColor: OrderTokens.filterBackground)
container.addSubview(imageView)
imageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
imageViews.append(imageView)
photosStack.addArrangedSubview(container)
if materials.count > 3, index == 2 {
let overlay = UIView()
overlay.backgroundColor = UIColor.black.withAlphaComponent(0.5)
let label = UILabel()
label.text = "查看更多"
label.font = .systemFont(ofSize: 14, weight: .medium)
label.textColor = .white
label.textAlignment = .center
overlay.addSubview(label)
label.snp.makeConstraints { make in
make.center.equalToSuperview()
}
container.addSubview(overlay)
overlay.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
overlayLabel = label
}
}
}
@objc private func handleTap() {
onTap?()
}
}