![]() |
iOS und Dark Mode
Hallo zusammen,
wie geht Ihr mit dem Dunkel-Modus auf dem iPhone um? Ich habe bis jetzt gerne ein weißes TRectangle als Hintergrund benutzt und darauf ein TLabel gelegt. Im Dark Mode ändert sich die Textfarbe des Labes automatisch zu weiß und das Rectangle bleibt weiß. Weiß auf weiß kann man aber schlecht lesen. Müsste ich da jetzt den Modus (Hell oder dunkel) abfragen und die Farbe des Rectangles anpassen oder gibt es da etwas automatisches? Oder: Irgendwelche schwarzen Images beleiben im Darkmode schwarz vor schwarzem Hintergrund. Muss man jetzt passende Images für den Dark Mode mitliefern? |
AW: iOS und Dark Mode
Wir haben für uns entschieden, dass wir die Farben in unserer App unter unserer Kontrolle haben wollen. Die App ist daher immer im Dark-Mode unterwegs, unabhängig vom Betriebssystem-Setting. Daher setzen wir für alle Elemente die FontColor bewusst selbst und in den StyledSettings wird FontColor nicht vererbt.
|
AW: iOS und Dark Mode
Ich habe es jetzt anders herum gemacht:
In den Projektoptionen, Versionsinformationen einen Eintrag UIUserInterfaceStyle = light hinzugefügt. Dann bleibt die App immer im Hell-Modus. Schöner wäre es zwar, wenn man das vernünftig anpassen könnte, aber den Aufwand spare ich mir jetzt erst mal. |
AW: iOS und Dark Mode
Weil iCh noch nicht auf SVG Icon umgestellt habe führe ich bei "Create" von jeder Form
diese Funktion aus um die Icons zu invertieren. Das ist nur für IOS notwendig
Delphi-Quellcode:
FitColorsToDarkOrLightMode(self);
Delphi-Quellcode:
SetFontColorForStates hatte ich früher auch mal mit in der Darkmode Anpassung aber das brauche ich jetzt nicht mehr.
Function IsDarkmodeOn:Boolean;
Begin result := false; {$IFDEF Framework_FMX} {$IFDEF MSWINDOWS} Result := false; {$ENDIF MSWINDOWS} {$IFDEF ANDROID} Result := false; {$ENDIF ANDROID} {$IFDEF IOS} Result := GetUserInterfaceStyle = UIUserInterfaceStyleDark; {$ENDIF IOS} {$ENDIF Framework_FMX} end; {$IFDEF Framework_FMX} Function FitColorsToDarkOrLightMode(acomp:TComponent):boolean; var i:integer; currentcomp:tcomponent; Begin Result := IsDarkModeOn; If Result then Begin for i := 0 to acomp.ComponentCount-1 do begin currentcomp := acomp.Components[i]; if currentcomp is TImagelist then ReplaceOpaqueColorForImagelist(currentcomp as TImagelist,TAlphaColors.White); end; end; end; procedure ReplaceOpaqueColorForImagelist(aImageList:TimageList; aColor:TAlphaColor); var aCanvas:TCanvas; i,j :Integer; Begin for i:= 0 to aImageList.Source.count-1 do Begin For j:= 0 to aImageList.Source.Items[i].MultiResBitmap.Count-1 do Begin aCanvas := aImageList.Source.Items[i].MultiResBitmap.Items[j].Bitmap.Canvas; aCanvas.BeginScene; aCanvas.Bitmap.ReplaceOpaqueColor(aColor); aCanvas.EndScene; End; End; end; Procedure SetFontColorForStates(aTextsetting:TTextSettings; aColor:TAlphaColor); Begin aTextSetting.FontColorForState.Focused := aColor; aTextSetting.FontColorForState.Hot := aColor; aTextSetting.FontColorForState.Pressed := aColor; aTextSetting.FontColorForState.Active := aColor; aTextSetting.FontColorForState.Normal := aColor; End; {$ENDIF Framework_FMX} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz