对齐有线传图页 Android UI,并改用相对路径持久化本地照片。
还原顶栏、浮动卡片、时间侧栏与底部交互;照片路径改为 CameraDownloads 相对路径并兼容旧数据;格式 Chip 固定 JPG 且不可点击。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -0,0 +1,58 @@
|
||||
//
|
||||
// DeviceStorageHelper.swift
|
||||
// suixinkan
|
||||
//
|
||||
// 读取本机型号与可用存储,对齐 Android DeviceStorageHelper。
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// 设备存储快照,用于有线传图页设备信息面板。
|
||||
struct DeviceStorageSnapshot: Equatable {
|
||||
let modelName: String
|
||||
let availableGbText: String
|
||||
}
|
||||
|
||||
/// 设备存储信息读取工具。
|
||||
enum DeviceStorageHelper {
|
||||
/// 读取当前设备型号与 Documents 目录可用空间。
|
||||
static func readStorageSnapshot() -> DeviceStorageSnapshot {
|
||||
let availableBytes = availableDocumentsBytes()
|
||||
let availableGb = Double(availableBytes) / 1024.0 / 1024.0 / 1024.0
|
||||
return DeviceStorageSnapshot(
|
||||
modelName: buildModelName(),
|
||||
availableGbText: String(format: "还剩 %.1fGB 可用", availableGb)
|
||||
)
|
||||
}
|
||||
|
||||
private static func buildModelName() -> String {
|
||||
var systemInfo = utsname()
|
||||
uname(&systemInfo)
|
||||
let machine = withUnsafePointer(to: &systemInfo.machine) {
|
||||
$0.withMemoryRebound(to: CChar.self, capacity: 1) {
|
||||
String(cString: $0)
|
||||
}
|
||||
}
|
||||
let marketingName = UIDevice.current.name.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
if !marketingName.isEmpty, marketingName != "iPhone", !marketingName.hasPrefix("iPad") {
|
||||
return marketingName
|
||||
}
|
||||
if !machine.isEmpty { return machine }
|
||||
return UIDevice.current.model
|
||||
}
|
||||
|
||||
private static func availableDocumentsBytes() -> Int64 {
|
||||
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
|
||||
guard let documentsURL else { return 0 }
|
||||
let values = try? documentsURL.resourceValues(forKeys: [.volumeAvailableCapacityForImportantUsageKey])
|
||||
if let capacity = values?.volumeAvailableCapacityForImportantUsage {
|
||||
return Int64(capacity)
|
||||
}
|
||||
if let attributes = try? FileManager.default.attributesOfFileSystem(forPath: documentsURL.path),
|
||||
let freeSize = attributes[.systemFreeSize] as? NSNumber {
|
||||
return freeSize.int64Value
|
||||
}
|
||||
return 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user