Mac: doch Catalyst — das iPad-Aussehen, ohne es nachzubauen
Deine Frage war die richtige. Eine native Mac-App sah an zwei Dutzend Stellen
anders aus, weil AppKit dieselben Dinge anders misst: Schriftgrößen,
Spaltenbreiten, Formularstil. Jede davon habe ich heute einzeln nachgezogen —
und wäre bei der nächsten Ansicht wieder von vorn angefangen.
Mac Catalyst nimmt die iPad-Oberfläche unverändert. Nicht nachgebaut, sondern
dieselbe: gleiche Schrift, gleiche Leiste, gleiche Abstände, und zwar auch in
allem, was noch kommt.
**Ich habe „MKV geht dann nie" gesagt. Das war falsch.** Ohne VLC spielen sie
nicht *unverändert* — der Server rechnet sie um, und das kann er längst. Nur
war die App darauf nicht vorbereitet: die Entscheidung hätte weiterhin VLC
gewählt, den es dort nicht gibt, und das Bild wäre schwarz geblieben.
`PlaybackSettings.hasFallbackEngine` fragt jetzt, ob es den zweiten Spieler auf
dieser Plattform überhaupt gibt. Wo nicht, übernimmt der Server. Das kostet ihn
Rechenzeit und sieht man nicht.
Unverändert abspielen kommt später zurück — dafür braucht es einen Decoder mit
einem Catalyst-Teil. VLCKits Binärpaket hat keinen:
ios-arm64 ios-simulator macos-arm64_x86_64 tvos watchos xros
Drei Stellen mussten Catalyst ausdrücklich ausnehmen: dort gilt `os(iOS)`, aber
ActivityKit gibt es nicht — die Typen sind da und jeder Aufruf ist als nicht
verfügbar markiert. Das ist die Art Falle, die erst der Compiler findet.
Die Anpassungen von vorhin bleiben stehen, obwohl Catalyst sie nicht braucht:
FlixyDesign baut für macOS mit, und `swift test` läuft dort. Sie kosten nichts
und halten den Weg zu einer nativen Mac-App offen, falls VLC ihn eines Tages
nötig macht.
263 Tests grün, iOS baut unverändert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4150724394
commit
f296d7ae1a
+34
-15
@@ -148,25 +148,27 @@ targets:
|
||||
# Die Live Activity für Downloads. Eine eigene Erweiterung, weil iOS die
|
||||
# Darstellung im Sperrbildschirm in einem getrennten Prozess zeichnet — die
|
||||
# App selbst läuft zu dem Zeitpunkt meist gar nicht.
|
||||
# Dieselben Quellen, eigenes Ziel.
|
||||
# Dieselben Quellen, dasselbe Aussehen.
|
||||
#
|
||||
# Ein gemeinsames Target für beide Plattformen wäre weniger Text, aber die
|
||||
# Info.plist ist voller iOS-Angaben — Startbildschirm, erlaubte
|
||||
# Ausrichtungen, Live Activities. Die müssten dann alle bedingt werden, und
|
||||
# jede spätere Änderung an der iOS-Seite ginge über eine Stelle, die auch
|
||||
# den Mac betrifft. Zwei Ziele sind ein paar Zeilen mehr und ein Sorge
|
||||
# weniger.
|
||||
# Mac Catalyst statt einer eigenen Mac-App: die iPad-Oberfläche läuft damit
|
||||
# unverändert auf dem Mac — gleiche Schriftgrößen, gleiche Seitenleiste,
|
||||
# gleiche Abstände. Eine native Mac-App war der erste Versuch; sie sah an
|
||||
# zwei Dutzend Stellen anders aus, weil AppKit dieselben Dinge anders misst,
|
||||
# und jede davon hätte einzeln nachgezogen werden müssen.
|
||||
#
|
||||
# Ohne DownloadWidget (Live Activities gibt es auf dem Mac nicht) und ohne
|
||||
# FlixyVLC: das Binärpaket ist auf iOS festgelegt. Der Player fällt dort
|
||||
# allein auf den Systemplayer zurück — was er nicht öffnen kann, sagt er.
|
||||
# Ohne DownloadWidget (Live Activities gibt es hier nicht) und **ohne
|
||||
# FlixyVLC**: dessen Binärpaket hat keinen Teil für Catalyst. MKV und DTS
|
||||
# werden dort deshalb vom Server umgerechnet statt unverändert übertragen —
|
||||
# siehe `PlaybackSettings.hasFallbackEngine`.
|
||||
FlixyMac:
|
||||
type: application
|
||||
platform: macOS
|
||||
platform: iOS
|
||||
sources:
|
||||
- path: Flixy
|
||||
excludes:
|
||||
- "AppIcon.icon"
|
||||
- path: Flixy/AppIcon.icon
|
||||
type: file
|
||||
dependencies:
|
||||
- package: FlixyKit
|
||||
product: MediaKit
|
||||
@@ -182,25 +184,42 @@ targets:
|
||||
product: FlixyDownloads
|
||||
settings:
|
||||
base:
|
||||
SUPPORTS_MACCATALYST: YES
|
||||
# Nur Mac: dieses Ziel ist nicht dazu da, aufs iPhone zu wandern.
|
||||
SUPPORTED_PLATFORMS: macosx
|
||||
# „An das iPad angeglichen" statt „für den Mac optimiert" — genau
|
||||
# darum geht es.
|
||||
MACCATALYST_OPTIMIZE_FOR_MAC: NO
|
||||
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER: NO
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffleservices.flixy
|
||||
PRODUCT_NAME: Flixy
|
||||
# Selbst signiert, ohne Entwicklerkonto: ein Build zum Ansehen soll
|
||||
# nicht jedes Mal nach dem Schlüsselbund-Passwort fragen.
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||
TARGETED_DEVICE_FAMILY: "2"
|
||||
# Selbst signiert: ein Build zum Ansehen soll nicht jedes Mal nach dem
|
||||
# Schlüsselbund-Passwort fragen.
|
||||
CODE_SIGN_STYLE: Manual
|
||||
CODE_SIGN_IDENTITY: "-"
|
||||
DEVELOPMENT_TEAM: ""
|
||||
ENABLE_HARDENED_RUNTIME: NO
|
||||
COMBINE_HIDPI_IMAGES: YES
|
||||
info:
|
||||
path: Flixy/Info-macOS.plist
|
||||
properties:
|
||||
CFBundleDisplayName: Flixy
|
||||
UILaunchScreen:
|
||||
UIColorName: LaunchBackground
|
||||
UIUserInterfaceStyle: Dark
|
||||
UISupportedInterfaceOrientations:
|
||||
- UIInterfaceOrientationPortrait
|
||||
- UIInterfaceOrientationLandscapeLeft
|
||||
- UIInterfaceOrientationLandscapeRight
|
||||
UIBackgroundModes:
|
||||
- audio
|
||||
LSApplicationCategoryType: public.app-category.entertainment
|
||||
NSHumanReadableCopyright: ""
|
||||
CFBundleURLTypes:
|
||||
- CFBundleURLName: com.scarriffleservices.flixy.auth
|
||||
CFBundleURLSchemes:
|
||||
- com.scarriffleservices.flixy
|
||||
ITSAppUsesNonExemptEncryption: false
|
||||
NSAppTransportSecurity:
|
||||
NSAllowsLocalNetworking: true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user