50 lines
1.1 KiB
Swift
50 lines
1.1 KiB
Swift
//
|
|
// GifvAttachmentView.swift
|
|
// Tusker
|
|
//
|
|
// Created by Shadowfacts on 5/12/20.
|
|
// Copyright © 2020 Shadowfacts. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import AVFoundation
|
|
|
|
class GifvAttachmentView: UIView {
|
|
|
|
override class var layerClass: AnyClass {
|
|
return AVPlayerLayer.self
|
|
}
|
|
|
|
private var playerLayer: AVPlayerLayer {
|
|
layer as! AVPlayerLayer
|
|
}
|
|
|
|
let item: AVPlayerItem
|
|
let player: AVPlayer
|
|
|
|
init(asset: AVAsset, gravity: AVLayerVideoGravity) {
|
|
item = AVPlayerItem(asset: asset)
|
|
player = AVPlayer(playerItem: item)
|
|
|
|
super.init(frame: .zero)
|
|
|
|
playerLayer.player = player
|
|
playerLayer.videoGravity = gravity
|
|
player.isMuted = true
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(restartItem), name: .AVPlayerItemDidPlayToEndTime, object: item)
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
@objc func restartItem() {
|
|
item.seek(to: .zero) { (success) in
|
|
guard success else { return }
|
|
self.player.play()
|
|
}
|
|
}
|
|
|
|
}
|