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")
|
|
}
|
|
|
|
}
|