75 lines
2.2 KiB
Swift
75 lines
2.2 KiB
Swift
//
|
|
// AssetCollectionViewCell.swift
|
|
// Tusker
|
|
//
|
|
// Created by Shadowfacts on 1/1/20.
|
|
// Copyright © 2020 Shadowfacts. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import Photos
|
|
|
|
class AssetCollectionViewCell: UICollectionViewCell {
|
|
|
|
static let durationFormatter: DateComponentsFormatter = {
|
|
let formatter = DateComponentsFormatter()
|
|
formatter.unitsStyle = .positional
|
|
formatter.allowedUnits = [.minute, .second]
|
|
formatter.zeroFormattingBehavior = .pad
|
|
return formatter
|
|
}()
|
|
|
|
var assetIdentifier: String!
|
|
var thumbnailImage: UIImage? {
|
|
get {
|
|
imageView.image
|
|
}
|
|
set {
|
|
imageView.image = newValue
|
|
}
|
|
}
|
|
|
|
@IBOutlet weak var imageView: UIImageView!
|
|
@IBOutlet weak var checkmarkVisualEffectView: UIVisualEffectView!
|
|
@IBOutlet weak var livePhotoVisualEffectView: UIVisualEffectView!
|
|
@IBOutlet weak var durationVisualEffectView: UIVisualEffectView!
|
|
@IBOutlet weak var durationLabel: UILabel!
|
|
|
|
override var isSelected: Bool {
|
|
didSet {
|
|
checkmarkVisualEffectView.isHidden = !isSelected
|
|
}
|
|
}
|
|
|
|
override func awakeFromNib() {
|
|
super.awakeFromNib()
|
|
|
|
checkmarkVisualEffectView.layer.masksToBounds = true
|
|
checkmarkVisualEffectView.layer.cornerRadius = 12
|
|
checkmarkVisualEffectView.isHidden = true
|
|
|
|
livePhotoVisualEffectView.layer.masksToBounds = true
|
|
livePhotoVisualEffectView.layer.cornerRadius = 12
|
|
|
|
durationVisualEffectView.layer.masksToBounds = true
|
|
durationVisualEffectView.layer.cornerRadius = durationVisualEffectView.bounds.width * 0.1
|
|
}
|
|
|
|
func updateUI(asset: PHAsset) {
|
|
assetIdentifier = asset.localIdentifier
|
|
|
|
durationVisualEffectView.isHidden = asset.mediaType != .video
|
|
if asset.mediaType == .video {
|
|
durationLabel.text = AssetCollectionViewCell.durationFormatter.string(from: asset.duration)
|
|
}
|
|
|
|
livePhotoVisualEffectView.isHidden = !(asset.mediaType == .image && asset.mediaSubtypes.contains(.photoLive))
|
|
}
|
|
|
|
override func prepareForReuse() {
|
|
thumbnailImage = nil
|
|
isSelected = false
|
|
}
|
|
|
|
}
|