65 lines
2.3 KiB
Swift
65 lines
2.3 KiB
Swift
![]() |
import UIKit
|
||
|
import CoreData
|
||
|
import AVFoundation
|
||
|
|
||
|
class InfoViewController: UIViewController {
|
||
|
var post: Post?
|
||
|
var image: UIImage?
|
||
|
|
||
|
@IBOutlet weak var infoLabel: UILabel!
|
||
|
|
||
|
private func resolutionForLocalVideo(url: URL) -> CGSize? {
|
||
|
guard let track = AVURLAsset(url: url).tracks(withMediaType: AVMediaType.video).first else { return nil }
|
||
|
let size = track.naturalSize.applying(track.preferredTransform)
|
||
|
return CGSize(width: abs(size.width), height: abs(size.height))
|
||
|
}
|
||
|
|
||
|
|
||
|
let documentsPath : URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].absoluteURL
|
||
|
|
||
|
override func viewWillAppear(_ animated: Bool) {
|
||
|
super.viewWillAppear(true)
|
||
|
|
||
|
let dateFormatter = DateFormatter()
|
||
|
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
||
|
|
||
|
var type = "Unavailable"
|
||
|
if(post!.type != nil) {
|
||
|
if(post!.type == "public.image") {
|
||
|
type = "Image"
|
||
|
} else if(post!.type == "public.mpeg-4") {
|
||
|
type = "Video"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var date = "Unavailable"
|
||
|
if(post!.date != nil) {
|
||
|
date = dateFormatter.string(from: post!.date!)
|
||
|
}
|
||
|
|
||
|
var size = "Unavailable"
|
||
|
if(post?.type == "public.mpeg-4") {
|
||
|
let videoPath = documentsPath.appendingPathComponent(post!.value(forKey: "name") as! String).path
|
||
|
|
||
|
let resolution = resolutionForLocalVideo(url: URL(fileURLWithPath: videoPath))
|
||
|
|
||
|
size = String(format: "%.0f", (resolution?.width)!) + "x" + String(format: "%.0f", (resolution?.height)!)
|
||
|
} else if(image != nil) {
|
||
|
size = String(format: "%.0f", (image?.size.width)!) + "x" + String(format: "%.0f", (image?.size.height)!)
|
||
|
}
|
||
|
|
||
|
infoLabel.text = "Type: " + type + "\nDate: " + date + "\nSize: " + size
|
||
|
}
|
||
|
|
||
|
@IBAction func exitAction(_ sender: Any) {
|
||
|
dismiss(animated: true, completion: nil)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
extension InfoViewController {
|
||
|
static func loadFromStoryboard() -> InfoViewController? {
|
||
|
let storyboard = UIStoryboard(name: "Main", bundle: .main)
|
||
|
return storyboard.instantiateViewController(withIdentifier: "InfoViewController") as? InfoViewController
|
||
|
}
|
||
|
}
|