Tusker/Tusker/Views/Attachments/GifvPlayerView.swift

49 lines
1.1 KiB
Swift

//
// GifvPlayerView.swift
// Tusker
//
// Created by Shadowfacts on 5/12/20.
// Copyright © 2020 Shadowfacts. All rights reserved.
//
import UIKit
import AVFoundation
import Combine
class GifvPlayerView: UIView {
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
private var playerLayer: AVPlayerLayer {
layer as! AVPlayerLayer
}
let controller: GifvController
private var presentationSizeCancellable: AnyCancellable?
override var intrinsicContentSize: CGSize {
controller.item.presentationSize
}
init(controller: GifvController, gravity: AVLayerVideoGravity) {
self.controller = controller
super.init(frame: .zero)
playerLayer.player = controller.player
playerLayer.videoGravity = gravity
presentationSizeCancellable = controller.presentationSizeSubject
.sink(receiveValue: { [unowned self] _ in
self.invalidateIntrinsicContentSize()
})
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}