diff --git a/src/iOS/Avalonia.iOS/AvaloniaView.cs b/src/iOS/Avalonia.iOS/AvaloniaView.cs index 6d36ca7814..7442861597 100644 --- a/src/iOS/Avalonia.iOS/AvaloniaView.cs +++ b/src/iOS/Avalonia.iOS/AvaloniaView.cs @@ -60,6 +60,14 @@ namespace Avalonia.iOS settings?.TraitCollectionDidChange(); } + public override void TintColorDidChange() + { + base.TintColorDidChange(); + + var settings = AvaloniaLocator.Current.GetRequiredService() as PlatformSettings; + settings?.TraitCollectionDidChange(); + } + internal class TopLevelImpl : ITopLevelImplWithTextInputMethod, ITopLevelImplWithNativeControlHost, ITopLevelImplWithStorageProvider { diff --git a/src/iOS/Avalonia.iOS/PlatformSettings.cs b/src/iOS/Avalonia.iOS/PlatformSettings.cs index b8557f31bd..0ae290468b 100644 --- a/src/iOS/Avalonia.iOS/PlatformSettings.cs +++ b/src/iOS/Avalonia.iOS/PlatformSettings.cs @@ -22,12 +22,34 @@ internal class PlatformSettings : DefaultPlatformSettings var contrastPreference = UITraitCollection.CurrentTraitCollection.AccessibilityContrast == UIAccessibilityContrast.High ? ColorContrastPreference.High : ColorContrastPreference.NoPreference; - - return _lastColorValues = new PlatformColorValues + + UIColor? tintColor = null; + if (OperatingSystem.IsIOSVersionAtLeast(14)) + { + tintColor = UIConfigurationColorTransformer.PreferredTint(UIColor.Clear); + } + + if (tintColor is not null) { - ThemeVariant = themeVariant, - ContrastPreference = contrastPreference - }; + tintColor.GetRGBA(out var red, out var green, out var blue, out var alpha); + return _lastColorValues = new PlatformColorValues + { + ThemeVariant = themeVariant, + ContrastPreference = contrastPreference, + AccentColor1 = new Color( + (byte)(alpha * 255), + (byte)(red * 255), + (byte)(green * 255), + (byte)(blue * 255)) + }; + } + else + { + return _lastColorValues = new PlatformColorValues + { + ThemeVariant = themeVariant, ContrastPreference = contrastPreference + }; + } } public void TraitCollectionDidChange()