You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
968 B
29 lines
968 B
import AppKit
|
|
import AVKit
|
|
import SwiftUI
|
|
|
|
/// Dünne Hülle um AppKits `AVPlayerView` statt AVKits SwiftUI-`VideoPlayer`.
|
|
///
|
|
/// `VideoPlayer` crasht auf manchen macOS-Ständen beim Öffnen mit einem
|
|
/// Swift-Runtime-Fehler ("failed to demangle superclass of VideoPlayerView
|
|
/// from mangled name 'So12AVPlayerViewC'") — ein Metadata-Bug in Apples
|
|
/// eigener `_AVKit_SwiftUI`-Bridge, kein Fehler in diesem Code. `AVPlayerView`
|
|
/// direkt per `NSViewRepresentable` einzubinden umgeht den kaputten Codepfad.
|
|
struct PlayerView: NSViewRepresentable {
|
|
let player: AVPlayer
|
|
|
|
func makeNSView(context: Context) -> AVPlayerView {
|
|
let view = AVPlayerView()
|
|
view.player = player
|
|
view.controlsStyle = .inline
|
|
view.showsFullScreenToggleButton = false
|
|
return view
|
|
}
|
|
|
|
func updateNSView(_ nsView: AVPlayerView, context: Context) {
|
|
if nsView.player !== player {
|
|
nsView.player = player
|
|
}
|
|
}
|
|
}
|