Der Untertitelstil wirkt jetzt sofort

`textStyleRules` wird nur gelesen, wenn die Untertitelspur ausgewaehlt
wird — eine laufende Einblendung zeichnet AVFoundation davon nicht neu.
Genau das war der Eindruck: man stellt um, es passiert nichts, und erst wer
die Untertitel aus- und wieder einschaltet, sieht die Aenderung.

Dieses Aus- und Einschalten **ist** die Neuwahl. Also machen wir sie selbst,
gleich nachdem der Stil gesetzt wurde.

Abgewaehlt und wieder angewaehlt wird dabei dieselbe Option, nicht die
erste: bei mehreren Spuren waere das ein stiller Sprachwechsel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-29 06:11:44 +02:00
co-authored by Claude Opus 5
parent c681d69fcc
commit 57170b20ea
@@ -259,7 +259,26 @@ public final class AVPlayerEngine: VideoPlayerEngine {
/// angelegt.
public func applySubtitleStyle(_ style: SubtitleStyle) {
subtitleStyle = style
player.currentItem?.textStyleRules = style.textStyleRules
guard let item = player.currentItem else { return }
item.textStyleRules = style.textStyleRules
// **Und die Spur neu wählen, sonst bleibt es bei der alten Form.**
//
// `textStyleRules` wird nur gelesen, wenn die Untertitelspur
// ausgewählt wird — eine laufende Einblendung zeichnet AVFoundation
// davon nicht neu. Das war genau der Eindruck: man stellt um, es
// passiert nichts, und erst wer die Untertitel aus- und wieder
// einschaltet, sieht die Änderung. Das Aus- und Einschalten ist die
// Neuwahl — also machen wir sie selbst.
//
// Abgewählt und wieder angewählt wird dieselbe Option, nicht die
// erste: bei mehreren Spuren wäre das ein stiller Sprachwechsel.
guard let group = item.asset.mediaSelectionGroup(forMediaCharacteristic: .legible),
let gewählt = item.currentMediaSelection.selectedMediaOption(in: group)
else { return }
item.select(nil, in: group)
item.select(gewählt, in: group)
}
/// Was gerade über die Leitung kommt.