49 lines
1.1 KiB
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")
|
||
|
}
|
||
|
|
||
|
}
|