Zum Inhalt springen

WebView Native UI Standardeinrichtung

Diese standardmäßige Ionic-Einrichtung kombiniert native iOS-Steuerelemente einschließlich iPhone Duo / Vertical Bars mit Android Dynamic Color. Zustand, Routen und Ereignishandler bleiben bei Ihrer Anwendung.

Vor dem Start

Verwenden Sie eine bestehende Ionic-App mit Capacitor 8 und Foldable ab 8.5 innerhalb von Version 8.

Native iOS-Steuerelemente benötigen iOS 26+ und Xcode 26+. Android Dynamic Color benötigt Android 12+; ältere Geräte behalten die Standardpalette. Natives Rail-Rendering erfordert zusätzlich ein unterstütztes Gerät und Betriebssystem.

Für andere Integrationen wählen Sie HTML ohne Ionic, Cordova oder nur Themes.

1. Pakete installieren

npm install @rdlabo/capacitor-native-ui @rdlabo/ionic-theme-ios27 @rdlabo/ionic-theme-md3 @erkamyaman/capacitor-foldable

2. Beide Themes konfigurieren

Behalten Sie Ionic-Basis-CSS bei und verwenden Sie diese Stylesheets. Der iOS-Einstieg enthält die klassenbasierte Dunkelpalette und das Vertical-Bars-Layout. Ersetzen Sie einen vorhandenen systemabhängigen oder dauerhaft dunklen Palettenimport durch diesen Einstieg.

@import '@rdlabo/ionic-theme-ios27/styles/class.css';
@import '@rdlabo/ionic-theme-md3/styles/theme.css';

Übergeben Sie das passende Preset an die vorhandene Ionic-Initialisierung:

import { Capacitor } from '@capacitor/core';
import { ios27ThemeConfig } from '@rdlabo/ionic-theme-ios27';
import { md3ThemeConfig } from '@rdlabo/ionic-theme-md3';

const ionicConfig = Capacitor.getPlatform() === 'ios' ? ios27ThemeConfig : md3ThemeConfig;
Framework Ionic initializer
Angular / Ionic 8 provideIonicAngular(ionicConfig) from @ionic/angular/standalone
Angular / Ionic 9 provideIonicAngular(ionicConfig) from @ionic/angular
React setupIonicReact(ionicConfig) from @ionic/react
Vue app.use(IonicVue, ionicConfig) with IonicVue from @ionic/vue

3. Nach dem Rendern der App-Shell starten

Führen Sie dies einmal nach dem Rendern der App-Shell einschließlich ion-app aus. Es verbindet beide Funktionen und die erforderlichen Layoutmeldungen:

import { Capacitor } from '@capacitor/core';
import {
  enableNativeUI,
  getDynamicColorScheme,
  addDynamicColorListener,
} from '@rdlabo/capacitor-native-ui';
import { Foldable } from '@erkamyaman/capacitor-foldable';
import { resolveVerticalBarsLayout } from '@rdlabo/capacitor-native-ui/integration';
import { setVerticalBarsLayout } from '@rdlabo/ionic-theme-ios27';
import { enableDynamicColors } from '@rdlabo/ionic-theme-md3/dynamic-colors';

await enableDynamicColors({
  getScheme: getDynamicColorScheme,
  listen: addDynamicColorListener,
  mode: 'system',
  onError: console.error,
});

if (Capacitor.getPlatform() === 'ios') {
  await enableNativeUI();

  const updateLayout = async () => {
    setVerticalBarsLayout(await resolveVerticalBarsLayout(Foldable));
  };

  void Foldable.addListener('layoutChange', () => void updateLayout().catch(console.error))
    .then(updateLayout)
    .catch(console.error);
}

Der Theme-Controller folgt der Systemdarstellung und wendet die Android-Palette an, wenn verfügbar. Andere Plattformen und nicht unterstützte Android-Geräte behalten die Ersatzfarben. Unter iOS startet Native UI mit normalen Steuerelementen und Vertical Bars; das Abonnement übernimmt das anfängliche Layout und Displaywechsel.

Verwenden Sie unter Angular den afterNextRender-Callback der App-Shell, unter React oder Vue den Start nach dem Mounten. Verwaltet Ihre App eine eigene Darstellungspräferenz, verbinden Sie diese gemäß dem Dynamic-Color-Leitfaden, statt einen zweiten Darstellungscontroller anzulegen.

4. Erstellen, synchronisieren und ausführen

Erstellen Sie die Web-Assets, synchronisieren Sie und bauen und starten Sie anschließend jede native App neu:

npx cap sync

SwiftPM löst Engine automatisch auf; vorhandene CocoaPods-Projekte verwenden die native Einrichtung.

Einzelne Optionen

Für Native UI ohne diese Themes verwenden Sie die Einrichtung mit vorhandenem Theme oder die HTML-Einrichtung. Siehe Dynamic Color für Darstellung und Farbzuordnung, Konfiguration für Native-UI-Optionen und Migration für bestehende Integrationen.

GitHub ↗