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.

30 lines
1.0 KiB

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
var controlsStyle: AVPlayerViewControlsStyle = .inline
func makeNSView(context: Context) -> AVPlayerView {
let view = AVPlayerView()
view.player = player
view.controlsStyle = controlsStyle
view.showsFullScreenToggleButton = false
return view
}
func updateNSView(_ nsView: AVPlayerView, context: Context) {
if nsView.player !== player {
nsView.player = player
}
}
}

Powered by TurnKey Linux.