选择图片分享功能

This commit is contained in:
2025-08-17 22:08:25 +08:00
parent e6afca5ba6
commit d80289fe73
19 changed files with 1402 additions and 110 deletions

View File

@@ -0,0 +1,39 @@
import UIKit
///
class ImageCacheManager {
static let shared = ImageCacheManager()
private let cache = NSCache<NSString, UIImage>()
//
private init() {
//
cache.totalCostLimit = 1024 * 1024 * 100 // 100MB
}
///
/// - Parameter url: URL
/// - Returns:
func getImage(for url: String) -> UIImage? {
return cache.object(forKey: url as NSString)
}
///
/// - Parameters:
/// - image:
/// - url: URL
func saveImage(_ image: UIImage, for url: String) {
cache.setObject(image, forKey: url as NSString)
}
/// URL
/// - Parameter url: URL
func removeImage(for url: String) {
cache.removeObject(forKey: url as NSString)
}
///
func clearAllCache() {
cache.removeAllObjects()
}
}

View File

@@ -0,0 +1,62 @@
import Foundation
class ReadingProgressManager {
static let shared = ReadingProgressManager()
private let userDefaults = UserDefaults.standard
private init() {}
///
func saveProgress(albumId: String, imageIndex: Int) {
userDefaults.set(imageIndex, forKey: progressKey(albumId: albumId))
print("已保存进度 - 漫画ID: \(albumId), 图片索引: \(imageIndex)")
}
///
func getProgress(albumId: String) -> Int {
return userDefaults.integer(forKey: progressKey(albumId: albumId))
}
///
func clearProgress(albumId: String) {
userDefaults.removeObject(forKey: progressKey(albumId: albumId))
}
///
private func progressKey(albumId: String) -> String {
return "readingProgress_\(albumId)"
}
}
///
class FavoriteManager {
static let shared = FavoriteManager()
private let userDefaults = UserDefaults.standard
private let favoriteKey = "favoriteAlbumIds"
private init() {}
/// ID
var favoriteAlbumIds: [String] {
userDefaults.array(forKey: favoriteKey) as? [String] ?? []
}
///
/// - Parameter albumId: ID
func toggleFavorite(albumId: String) {
var favorites = favoriteAlbumIds
if favorites.contains(albumId) {
favorites.removeAll { $0 == albumId }
} else {
favorites.append(albumId)
}
userDefaults.set(favorites, forKey: favoriteKey)
}
///
/// - Parameter albumId: ID
/// - Returns:
func isFavorite(albumId: String) -> Bool {
return favoriteAlbumIds.contains(albumId)
}
}