重构相册详情为信息卡片、Tab 筛选、排序、批量删除与底部上传栏;修复网格重叠、禁用按钮蒙层,并支持点击预览大图。同步扩展素材列表 API 与 ViewModel 分页逻辑,并优化有线传图缩略图与传输性能。 Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.1 KiB
Swift
35 lines
1.1 KiB
Swift
//
|
||
// MiddleTruncatedText.swift
|
||
// suixinkan
|
||
//
|
||
// 文件名中间省略展示,对齐 Android MiddleEllipsisTextView。
|
||
//
|
||
|
||
import SwiftUI
|
||
import UIKit
|
||
|
||
/// 中间省略文本,用于长文件名展示。
|
||
struct MiddleTruncatedText: UIViewRepresentable {
|
||
let text: String
|
||
var font: UIFont = .systemFont(ofSize: 11, weight: .regular)
|
||
var textColor: UIColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
|
||
|
||
/// 创建中间省略 UILabel。
|
||
func makeUIView(context: Context) -> UILabel {
|
||
let label = UILabel()
|
||
label.lineBreakMode = .byTruncatingMiddle
|
||
label.numberOfLines = 1
|
||
label.setContentHuggingPriority(.required, for: .vertical)
|
||
label.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
||
label.setContentCompressionResistancePriority(.required, for: .vertical)
|
||
return label
|
||
}
|
||
|
||
/// 更新文本样式。
|
||
func updateUIView(_ uiView: UILabel, context: Context) {
|
||
uiView.text = text
|
||
uiView.font = font
|
||
uiView.textColor = textColor
|
||
}
|
||
}
|