Add grid, camera focus

This commit is contained in:
Christoph Hagen
2022-06-21 19:38:51 +02:00
parent 2b3ab859fc
commit 4b91ebcd02
21 changed files with 895 additions and 104 deletions

View File

@ -0,0 +1,26 @@
import Foundation
extension FileManager {
var documentDirectory: URL {
try! url(
for: .documentDirectory,
in: .userDomainMask,
appropriateFor: nil, create: true)
}
private func fileSizeEnumerator(at directory: URL) -> DirectoryEnumerator? {
enumerator(at: directory,
includingPropertiesForKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey],
options: []) { (_, error) -> Bool in
print(error)
return false
}
}
func directorySize(_ directory: URL) -> Int {
return fileSizeEnumerator(at: directory)?
.compactMap { $0 as? URL }
.reduce(0) { $0 + $1.fileSize } ?? 0
}
}

View File

@ -147,3 +147,14 @@ private func saturate(_ component: UInt8) -> CGFloat {
}
extension CIImage: Logger { }
extension UIImage {
convenience init?(at url: URL) {
guard let data = try? Data(contentsOf: url) else {
return nil
}
self.init(data: data, scale: UIScreen.main.scale)
}
}

View File

@ -22,4 +22,14 @@ extension URL {
var creationDate: Date? {
return attributes?[.creationDate] as? Date
}
var fileSizeAlt: Int? {
do {
let val = try self.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])
return val.totalFileAllocatedSize ?? val.fileAllocatedSize
} catch {
print(error)
return nil
}
}
}

View File

@ -0,0 +1,19 @@
import SwiftUI
extension View {
func snapshot() -> UIImage {
let controller = UIHostingController(rootView: self)
let view = controller.view
let targetSize = controller.view.intrinsicContentSize
view?.bounds = CGRect(origin: .zero, size: targetSize)
view?.backgroundColor = .clear
let renderer = UIGraphicsImageRenderer(size: targetSize)
return renderer.image { _ in
view?.drawHierarchy(in: controller.view.bounds, afterScreenUpdates: true)
}
}
}