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:
co-authored by
Claude Opus 5
parent
c681d69fcc
commit
57170b20ea
@@ -259,7 +259,26 @@ public final class AVPlayerEngine: VideoPlayerEngine {
|
|||||||
/// angelegt.
|
/// angelegt.
|
||||||
public func applySubtitleStyle(_ style: SubtitleStyle) {
|
public func applySubtitleStyle(_ style: SubtitleStyle) {
|
||||||
subtitleStyle = style
|
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.
|
/// Was gerade über die Leitung kommt.
|
||||||
|
|||||||
Reference in New Issue
Block a user