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